merge与rebase区别,建议用rebase
git开发中,通常会存在合并分支的现象,Merge与Rebase是两种合并分支的策略,那么这两个策略的区别是什么?什么时候用什么比较好?
合并分支策略
1. Merge
Git 会把两个分支的修改合并到一起。如果同时在两个分支上修改了同一个文件的同一行,就会产生冲突,需要手动解决。你可以通过以下命令来设置这个策略:
1 | git config pull.rebase false |
2. Rebase
Git 会把你在本地分支上的修改暂时保存起来,然后把本地分支更新为远程分支的最新状态,最后再把保存起来的修改应用回去。这样可以保持提交历史的线性,但是如果两个分支有相同的修改,可能需要解决更多的冲突。你可以通过以下命令来设置这个策略:
1 | git config pull.rebase true |
-
Fast-forward only
只有当本地分支可以直接快进到远程分支的状态时,Git 才会进行更新,否则就会报错。这个策略可以通过以下命令来设置:
1 | git config pull.ff only |
以上的命令只会影响当前的仓库。如果你想让所有的仓库都使用同样的策略,可以在命令中加上 --global
选项,例如 git config --global pull.rebase true
。另外,在执行 git pull
命令时,你也可以通过命令行参数来临时指定使用哪种策略,例如 git pull --rebase
或 git pull --no-rebase
。
图示区别
图源知乎
总结
如果你想要一个干净、线性的提交历史,那么使用rebase
如果你想要保持真实的提交历史,那么使用merge
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MEMORANDUM!
评论