Git常用命令整理,详细全面(3)

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认 GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

从远程库克隆

当已经有一个远程库的时候,我们可以用命令git clone克隆一个本地库:

git clone git@github.com:test/testgit.git  

你也许还注意到,GitHub给出的地址不止一个,还可以用https://github.com/test/testgit.git这样的地址。实际上Git支持多种协议,默认的git://使用ssh,但也可以使用 https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

创建与合并分支

首先我们创建dev分支,然后切换到dev分支:

git checkout -b dev  

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git branch dev
git checkout dev
 

然后用git branch命令查看当前分支:

git branch  

我们在dev分支上进行添加修改操作,然后我们把dev分支的工作成果合并到master分支上:

git checkout master
git merge dev
 

git merge命令用于合并指定分支到当前分支。

注意到git merge的信息里面可能有Fast-forward字样,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

当然也不是每次合并都能Fast-forward。

合并完成后,就可以放心地删除dev分支了:

git branch -d dev  

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <branch>强行删除。

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

解决冲突

人生不如意之事十之八九,合并分支往往也不是一帆风顺的。

有时候我们进行合并的时候,会提示有冲突出现CONFLICT (content),必须手动解决冲突后再提交。git status也可以告诉我们冲突的文件。

打开冲突文件我们会看到Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改后提交:

git add readme.md
git commit -m "conflict fixed"
 

用带参数的git log也可以看到分支的合并情况:

git log --graph --pretty=oneline --abbrev-commit  
分支管理策略

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

下面我们实战一下--no-ff方式的git merge:

首先,仍然创建并切换dev分支:

git checkout -b dev  

修改readme.md文件,并提交一个新的commit:

git add readme.md
git commit -m "add merge"
 

现在,我们切换回master:

git checkout master  

准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:

git merge --no-ff -m "merge with no-ff" dev  
Bug分支

软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交。

并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12879.html