带你理解 Git 中的 Merge 和 Rebase
in 码农技术宅 with 0 comment

带你理解 Git 中的 Merge 和 Rebase

in 码农技术宅 with 0 comment

概念

Rebase 和 merge 都被设计用来将变更从一个分支整合到另一个分支,但是它们的实现方式却不同。

下面假如我们有如下提交,merge 会将两个分支的代码合并,而 rebase 会将 feature 分支上所有的变更在 master 分支上重新应用一遍:

1-three.png

Merge 的优与劣

优点

缺点

Rebase 的优与劣

优点

缺点

你在使用 rebase 时也应该更加小心

总结

  1. 如果有几个开发者同时在 feature 分支上开发,就不推荐使用 rebase,因为 rebase 会掩盖真实的提交场景。相对而言,个人开发更适合使用 rebase。
  2. 如果你想保留完整的历史记录,就应该使用 merge。记住,Merge 保留历史记录,而 Rebase 改写历史记录

Rebase 可以用来精简一个复杂的历史记录,通过交互式 rebase,你可以去掉不想要的 commit,合并多个 commit 甚至修改 commit 信息。

需要注意的是,由于 rebase 是将 commit 一个一个应用到目标分支,所以在产生冲突时,需要针对 commit 一个一个去解决,而 merge 是将 commit 的最终结果合并到目标分支,所以冲突只需要解决一次即可。而如果有很多冲突的话,撤销一个 rebase 也将会非常困难。

参考文章

Responses