Git分支管理

来源:互联网 发布:台球厅计时软件 编辑:程序博客网 时间:2024/06/03 20:02

1、创建、合并、删除分支

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

git checkout -b dev

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

git branch devgit checkout dev

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

git branch

这里写图片描述

git branch命令会列出所有分支,当前分支前面会标一个*号。现在,dev分支的工作完成,我们就可以切换回master分支:

git checkout master

这里写图片描述

现在,我们把dev分支的工作成果合并到master分支上:

git merge dev

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

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

git branch -d dev

删除后,查看branch,就只剩下master分支了:

git branch

这里写图片描述

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

在两个分支合并的过程中,可能出现冲突:

这里写图片描述

README.md文件存在冲突:

这里写图片描述

  当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。用git log –graph命令可以看到分支合并图。

git log --graph --pretty=oneline --abbrev-commit

这里写图片描述

2、分支管理策略

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

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

git merge --no-ff -m "merge with no-ff" dev

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

3、Bug分支

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

这里写图片描述

  Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

git stash

这里写图片描述

  首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

这里写图片描述

修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

这里写图片描述

  bug已经修复完了。现在,是时候接着回到dev分支干活了!用git stash list查看刚才的工作现场存。

git stash list

这里写图片描述

  工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

  一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

  另一种方式是用git stash pop,恢复的同时把stash内容也删了。

git stash pop

  你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

git stash apply stash@{0}

参考链接:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743862006503a1c5bf5a783434581661a3cc2084efa000