以下信息来源于网络资料,并进行整理与精简

Git是目前世界上最先进的分布式版本控制系统,和svn,vss等一样都是进行版本控制的。

GitHub是一个软件项目的托管平台,相当于自己建立的 svn服务器,vss服务器,GitHub平台可以建立私人仓库和公开仓库,私人仓库需要收费,公开仓库不收费,但大家都可以免费下载(不可以更改)

接下来就讲解一下如何使用Git与GitHub

(1)  申请GitHub

打开网址:https://github.com/,点击signup,注册一个github账号

(2)下载并安装git

打开网址:https://git-scm.com/downloads

点击windows,选择适合自己的版本,进行安装。

(3)在某个磁盘下新建一个文件夹作为本地仓库

点击右键 “git bash here”

配置自己的名称:

$ git config --global user.name 'test'

$ git config --global user.email 'test@test.com'

查询是否配置成功

$ git config --global user.name

$ git config --global user.email

(3)在GitHub创建仓库

打开网址https://github.com/,并进行登录

点击your repositories,点击new,填写仓库信息,点击create repository

(4)本地仓库和GitHub对接

首先创建密钥,上传到github,进行以后的身份验证

执行命令:$ ssh-keygen -t rsa -C *****@qq.com

这里的邮箱,必须是github账号的邮箱,根据提示进行输入

找到密钥存储位置,打开公钥,复制里面的内容

在github网站把此内容复制到相应窗口:

个人中心->setting->ssh and gpgkeys->new ssh key->add ssh key

(5)github仓库clone到本地

执行一下命令:

$ git clone git@github.com:fengyuzhexing/test.git【自己的git地址】

输入密码

可以看到项目已经clone到本地了

(6)提交到本地仓库

在此目录下新建一个文件 test.txt,输入内容:testbegin,

把文件提交到本地仓库

首先运行pwd命令,看当前所在目录

切换目录到需要提交的文件目录

运行命令:

$ git add 'test.txt'

$ git commit -m 'testfirst'

$ git log【查看提交记录】

(7)提交到远程仓库

$ git push origin master

可以看到github网站已经有新建的文件了

(8)创建分支

分支概念图

通常情况下,github会有一个默认的主分支 master,这个分支一般都是存放最终发布版本的代码,一般情况下会建立一个新的分支 例如 dev,在这个分支上进行开发维护,最后在发布之前,合并到master分支。

每一个分支,都是一个独立的版本,拥有自己版本时间线,在不同分支下的操作是相互独立的。

接下来可以参看一下一个例子

  1. 新建分支 dev,并切换到分支

$ git checkout -b dev

$ git branch

可以看到已经切换到了dev这个分支,此时dev分支的内容和master是一样,相当于是从当前master进行了一份copy

  1. 在dev下进行提交

当前在dev下的任何提交不会影响mater分支,只是在dev分支上进行处理

编辑test.txt 文件

运行一下命令,提交

$ git add 'test.txt'

$ git commit -m 'dev'

$ git log

  1. 切换到master,进行查看

$ git switch master

$ git branch

可以看到已经切换到了master

再打开文件看内容是什么,可以看到这个文件的内容没有变化,还是master分支的数据。

  1. 合并dev到master

$ git merge dev

再次查看 master下的test.txt,可以看到dev数据被合并过来了

删除dev分支

$ git branch -d dev

4 解决冲突

冲突出现的原因:

每个人在本地都有一套自己的源码库,在开发过程中

A 同学 修改了本地的 test.txt,

B 同学 也修改了本地的 text.txt

这时候 A同学 把本地代码 push到 服务器仓库,B同学再想push到服务器仓库,就会出现问题,因为B同学不可以覆盖A同学的更改,所以这时候 B同学就要把代码pull下来就行代码合并,解决完冲突再上传到服务器仓库。

因为之前的改动都是在本地,所以首先将本地的代码先提交到github,运行以下命令

$ git push origin master

打开github网站,可以看到本地数据和git服务器数据已经同步

  1. 模拟A同学修改本地代码

打开github后台,在线修改test.txt,然后提交

输入以下内容:

输入 commit 备注,点击commit changes

此时A同学已经把代码进行了更改,并且提交到服务器

  1. 模拟B同学修改代码

在本地仓库打开test.txt,输入以下内容:masterB-localchange

在命令行输入 提交命令

$ git add 'test.txt'

$ git commit -m 'b-local'

$ git push origin master

在提交到服务器仓库命令时,出现异常

  1. 冲突解决

首先把服务代码拉取下来

$ git pull

找到冲突文件,可以看到这里已经合并了文件,但有问题,需要自己手动编辑

编辑后文件

再次运行以下命令重新上传

$ git add 'test.txt'

$ git commit -m 'hebing'

$ git push origin master

上传成功了

再次打开github网站查看内容,已经同步过去了

(5)版本回退

回退版本命令:$ git reset --hard 【待回退的comitid】

有时候可能提交失败了,必须要回退回某一个版本可以运行以下命令:

$ git log

可以回退到dev当时的版本,运行以下命令

$ git reset --hard 57554

可以看到数据已经回退回去了

再运行 git

$
git reset --hard 8cf6c

可以看到版本又回来了

Git与GitHub 学习笔记的更多相关文章

  1. git和github学习笔记

    1. 了解Git和Github 2. 使用Github 3. Git安装和使用 4. Git基本工作流程 5. Git初始化及仓库创建和操作 6. Git管理远程仓库 7. Github Pages ...

  2. eclipse使用git及github学习笔记

    项目托管 1.首先需要在github上建立一个远端仓库  点击Create repository后,会在github上建立相应的git仓库,并会出现如下界面: 复制https或者ssh的仓库地址,远端 ...

  3. Git与GitHub学习笔记(七)Windows 配置Github ssh key

    前言 SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell.SSH登录是需要用户 ...

  4. Git与GitHub学习笔记(三).gitignore文件忽略和删除本地以及远程文件

    一.Git提供了文件忽略功能.当对工作区某个目录或者某些文件设置了忽略后,git将不会对它们进行追踪 HELP:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件 问题:最近 ...

  5. Git与GitHub学习笔记(八)git如何同时同步提交到码云和GitHub上

    前言: 今天github push代码一直push不上去,打算就备份一份代码带国内开源码云上. Github容易出现的情况是: 国内访问速度比较慢, 如果被墙掉的话,就直接没发使用了 如果开源个PHP ...

  6. Git与GitHub学习笔记(五)一次提交失败的记录

    代码已经跟踪了,添加注释说明,但是总是添加不了 error: pathspec 'live-page'' did not match any file(s) known to git. 重复了好多遍, ...

  7. git and github学习笔记

    1.git的状态分为working status,stage status和commit status.git diff查看的是working status和 stage status之间的不同,gi ...

  8. Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档

    前言 你可能比较熟悉如何用 Github Pages 来分享你的工作,又或许你看过一堂教你建立你的第一个 Github Pages 网站的教程.近期 Github Pages 的改进使得从不同的数据源 ...

  9. Git与GitHub学习笔记(一)如何删除github里面的文件夹?

    按照以下步骤即可(本地删除) 1. git pull you git url2. git checkout 3. rm -r dirName4. git add --all5. git commit  ...

随机推荐

  1. inline-block元素间隙产生及去除方法

    当我们把元素属性display设置成inline-block时,元素之间就会产生间隙 <!DOCTYPE html><html> <head> <meta c ...

  2. 【vue】在VS Code中调试Jest单元测试

    在VS Code中调试Jest单元测试 添加调试任务 打开 vscode launch.json 文件,在 configurations 内加入下面代码 "configurations&qu ...

  3. php mkdir不能创建文件夹的原因

    php mkdir不能创建文件夹的原因 1 权限问题2 open_basedir设置问题 参考方法http://newmiracle.cn/?p=2896

  4. beyong Compare4解决30天的评估期结束

    刚开始是删掉注册表的CacheId(无效) 1.在搜索栏中输入 regedit ,打开注册表2.删除项目CacheId :HKEY_CURRENT_USER\Software\Scooter Soft ...

  5. iOS核心动画高级技巧-2

    3. 图层几何学 图层几何学 不熟悉几何学的人就不要来这里了 --柏拉图学院入口的签名 在第二章里面,我们介绍了图层背后的图片,和一些控制图层坐标和旋转的属性.在这一章中,我们将要看一看图层内部是如何 ...

  6. 【搞定 Java 并发面试】面试最常问的 Java 并发基础常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.欢迎 Sta ...

  7. PHP字符逃逸导致的对象注入

    1.漏洞产生原因: 序列化的字符串在经过过滤函数不正确的处理而导致对象注入,目前看到都是因为过滤函数放在了serialize函数之后,要是放在序列化之前应该就不会产生这个问题 ?php functio ...

  8. objc反汇编分析,手工逆向libsystem_blocks.dylib

    上一篇<block函数块为何物?>介绍了在函数中定义的block函数块的反汇编实现,我在文中再三指出__block变量和block函数块自始还都是stack-based的,还不完全适合在离 ...

  9. 标准库flag和cobra

    package main import "flag" var b bool var q *bool func init(){ var b bool //方式一 flag.Type( ...

  10. 新闻网页通用抽取器GNEv0.04版更新,支持提取正文图片与源代码

    GeneralNewsExtractor以下简称GNE是一个新闻网页通用抽取器,能够在不指定任何抽取规则的情况下,把新闻网站的正文提取出来. 我们来看一下它的基本使用方法. 安装 GNE 使用 pip ...