使用rebase (变基) 代替merge 来优化git 合并操作(基于idea)

假设我们有如下git 提交记录


  1. 初始节点
  2. master 基于初始节点进行了2次更改
  3. feature 基于初始节点进行了2次更改

如果feature现在需要合并到master中, 常见的做法,是使用merge,最后得到如下图的结果

这样做法是没有问题的, 但是对于code review是一个很不好的体验, 特别是实际项目中的代码合并情况往往特别复杂, 经常出现feature需要master中的新功能, 导致反复合并的情况,git 提交记录更没办法看了. 这个时候, 如果正确的使用rebase , 可以大幅减少git log 的复杂度.

我们先切回到feature分支, 然后执行rebase


image.png

得到下图的结果


image.png

git 提交的线被撸直了, 好像feature是基于最新的master进行修改的, 并且feature里也包含的master的所有代码.

结合交互式的折叠 就可以大幅减少git 中的提交记录的次数, merge的数量, code review的时候, 每一次更改都一目了然.

注意: 如果需要rebase的分支已经推送到了remote , 那么进行rebase的操作的时候, 请将本分支再分支一个出来, 因为rebase是对分支已有的提交进行修改, 如果其他人拉取了你的旧的提交, 你再推送新的更改上去, 会让人很困惑, 所以对于已经推送到远端的分支, rebase一定要创建一个新的分支, 不要推送到远端的时候,进行rebase(变基)

你可能感兴趣的:(使用rebase (变基) 代替merge 来优化git 合并操作(基于idea))