今天我们来聊一下git中的变基
git rebase 命令的文档描述是 Reapply commits on top of another base tip,从字面上理解是「在另一个基端之上重新应用提交」,这个定义听起来有点抽象,换个角度可以理解为「将分支的基础从一个提交改成另一个提交,使其看起来就像是从另一个提交中创建了分支一样」,如下图:
假设我们从 Master 的提交 A 创建了 feature 分支进行新的功能开发,这时 A 就是 feature 的基端。接着 Master 新增了两个提交 B 和 C,feature 新增了两个提交 D 和 E。现在我们出于某种原因,比如新功能的开发依赖 B、C 提交,需要将 Master 的两个新提交整合到 feature 分支,为了保持提交历史的整洁,我们可以切换到 feature 分支执行 rebase 操作:
总结rebase的使用场景:
- 我们从 Master 分支拉取了一条 feature 分支在本地进行功能开发
- 远程的 Master 分支在之后又合并了一些新的提交
- 我们想在 feature 分支集成 Master 的最新更改
另外,在我们日常提交代码前,将服务器的代码更新到本地后,再提交代码时,会发现本地有很多别人修改的代码成为了自己修改的代码且标记为被修改的状态,解决这个问题的方法就是rebase