Fast-forward 合并
- 假设我们在之前创建的
location-modules分支上添加的新功能也想应用到master分支上,这样我们可以做一个合并的操作。用的是git merge命令。 - 首先切换到
master这个分支上,可以用一个git branch查看一下当前的分支,如果在其它的分支上,用git checkout切换到 master 这个分支上来git checkout master。 - 然后输入
git merge,后面加上要合并的分支的名称,git merge location-modules回车。 - 这里会显示 Fast-forward ,说明这是一个 Fast-forward 合并。到目前为止,我们在创建 location-modules 以后,还没有对 master 做新的提交,所以这个合并就是一个 Fast forward 合并,也就是会直接把在
location-modules分支上做的提交合并到master这个分支上来,这个合并的动作不会是一个新的提交,我们可以查看一下日志,使用命令git log --oneline。 - 当前我们是在
master这个分支上,显示最后一次提交是 为MainActivity.java引入定位工具类,这个提交我们是在location-modules这个分支上做的,因为刚才已经把这个分支合并到了master上面,所以,最后一次提交也就是在location-modules这个分支上的最后一次提交。gitdiff master..location-modules。 - 没有任何的提示,因为我们已经把在
location-modules提交的修改合并到了master分支上。所以合并以后,这两个分支已经没有区别了。
No Fast-forward 合并
- 在创建
location-modules分支以后,我们没有对 master 做新的提交,所以合并的时候,是一个 fast-forward 合并 ,如果说对location-modules分支做的新的提交,同时,我们又切换到 master 分支,去做了几次新的提交, master 这个分支跟在创建location-modules分支的时候已经不一样了。 - 这个时候再去合并,就是一个真正的合并了,这种合并有时可能会遇到冲突,我们需要先解决这些冲突,然后再去做合并。下面,我们来看一下这种合并。
- 先切换到
location-modules分支,再去做一点修改,删除一行 import 代码。git checkout location-modules。 - 再去提交一下这个修改,这里我们用一个快捷方式,可以直接使用 git commit ,加上一个 a 参数 … 这样就不需要先去使用 git add 添加修改了,git commit -a ,后面还要再加上 m 参数,指定一个描述信息,
git commit -am '为 MainActivity.java 删除一个定位import',git log --oneline查看一下日志。 - 再切换到 master 这个分支上,
git checkout master。然后项目下面去新建一个文本文件为 README.md 在这个文本文件里,回到终端使用命令git status查看一下状态。 - 然后再去提交一下 git add . ,git commit -m ‘项目添加了文件 README.md’。
- 查看一下所有分支的所有的提交,在后面可以指定一下显示的日志的数量,最后可以再加上一个 graph 选项 ,
git log --oneline --all -10 --graph。 - 你会看到,在
location-modules这个分支上做了一个提交,同时,我们也对 master 这个分支做了提交 ,这个时候,我们去合并分支的话,就不能做 fast-forward 合并了。需要去做一个新的合并提交。git branch,看一下当前所在的分支。 - 使用命令
git merge location-modules回车以后,会出现一个提示,让我们输入一点这个合并提交的描述,默认是Merge branch 'location-modules',合并location-modules这个分支,你可以修改这个描述信息不想改的话,直接保存退出就行了。这里 # 号开头的是注释的内容,可以不用管。 - 再查看一下日志,
git log --oneline --all -10 --graph。 - 在这里,你会看到这个新的合并的提交 ,打开项目的
MainActivity.java看一下,当前我们是在master这个分支上,这里也会有在location-modules分支上也删除了import,因为我们已经把这个分支合并到了 master 分支上了。
结束语
本篇内容的介绍了如何在分支上合并代码。后面的文章会带来Git解决冲突、删除分支。如有欠缺或不对的地方欢迎评论,谢谢您的观看。