Fast-forward 合并

  • 假设我们在之前创建的 location-modules 分支上添加的新功能也想应用到 master 分支上,这样我们可以做一个合并的操作。用的是 git merge 命令。
  • 首先切换到 master 这个分支上,可以用一个 git branch 查看一下当前的分支,如果在其它的分支上,用 git checkout 切换到 master 这个分支上来 git checkout master
  • 然后输入 git merge ,后面加上要合并的分支的名称,git merge location-modules 回车。
    12.使用 git merge 合并分支
  • 这里会显示 Fast-forward ,说明这是一个 Fast-forward 合并。到目前为止,我们在创建 location-modules 以后,还没有对 master 做新的提交,所以这个合并就是一个 Fast forward 合并,也就是会直接把在 location-modules 分支上做的提交合并到 master 这个分支上来,这个合并的动作不会是一个新的提交,我们可以查看一下日志,使用命令 git log --oneline
    12.使用 git merge 合并分支
  • 当前我们是在 master 这个分支上,显示最后一次提交是 为MainActivity.java 引入定位工具类,这个提交我们是在 location-modules 这个分支上做的,因为刚才已经把这个分支合并到了 master 上面,所以,最后一次提交也就是在 location-modules 这个分支上的最后一次提交。git diff master..location-modules
    12.使用 git merge 合并分支
  • 没有任何的提示,因为我们已经把在 location-modules 提交的修改合并到了 master 分支上。所以合并以后,这两个分支已经没有区别了。

No Fast-forward 合并

  • 在创建 location-modules 分支以后,我们没有对 master 做新的提交,所以合并的时候,是一个 fast-forward 合并 ,如果说对 location-modules 分支做的新的提交,同时,我们又切换到 master 分支,去做了几次新的提交, master 这个分支跟在创建 location-modules 分支的时候已经不一样了。
  • 这个时候再去合并,就是一个真正的合并了,这种合并有时可能会遇到冲突,我们需要先解决这些冲突,然后再去做合并。下面,我们来看一下这种合并。
  • 先切换到 location-modules 分支,再去做一点修改,删除一行 import 代码。git checkout location-modules
    12.使用 git merge 合并分支
  • 再去提交一下这个修改,这里我们用一个快捷方式,可以直接使用 git commit ,加上一个 a 参数 … 这样就不需要先去使用 git add 添加修改了,git commit -a ,后面还要再加上 m 参数,指定一个描述信息,git commit -am '为 MainActivity.java 删除一个定位import' , git log --oneline 查看一下日志。
    12.使用 git merge 合并分支
  • 再切换到 master 这个分支上,git checkout master 。然后项目下面去新建一个文本文件为 README.md 在这个文本文件里,回到终端使用命令 git status 查看一下状态。
    12.使用 git merge 合并分支
    12.使用 git merge 合并分支
  • 然后再去提交一下 git add . ,git commit -m ‘项目添加了文件 README.md’。
    12.使用 git merge 合并分支
  • 查看一下所有分支的所有的提交,在后面可以指定一下显示的日志的数量,最后可以再加上一个 graph 选项 ,git log --oneline --all -10 --graph
    12.使用 git merge 合并分支
  • 你会看到,在 location-modules 这个分支上做了一个提交,同时,我们也对 master 这个分支做了提交 ,这个时候,我们去合并分支的话,就不能做 fast-forward 合并了。需要去做一个新的合并提交。git branch ,看一下当前所在的分支。
  • 使用命令 git merge location-modules 回车以后,会出现一个提示,让我们输入一点这个合并提交的描述,默认是 Merge branch 'location-modules',合并 location-modules 这个分支,你可以修改这个描述信息不想改的话,直接保存退出就行了。这里 # 号开头的是注释的内容,可以不用管。
    12.使用 git merge 合并分支
    12.使用 git merge 合并分支
  • 再查看一下日志,git log --oneline --all -10 --graph
    12.使用 git merge 合并分支
  • 在这里,你会看到这个新的合并的提交 ,打开项目的 MainActivity.java 看一下,当前我们是在 master 这个分支上,这里也会有在 location-modules 分支上也删除了 import ,因为我们已经把这个分支合并到了 master 分支上了。

结束语

本篇内容的介绍了如何在分支上合并代码。后面的文章会带来Git解决冲突、删除分支。如有欠缺或不对的地方欢迎评论,谢谢您的观看。

相关文章: