0x00 前言
git rebase 是 Git 中一个强大而灵活的命令,它能帮助我们清理提交历史,保持代码库整洁。在使用 rebase 时,有一些常见的场景和技巧,掌握它们能让你的 Git 工作流更加顺畅。
0x01本地分支变基到最新主分支
当你在本地分支上开发,并有了一些本地提交,而远程主分支又有了新的提交时,可以通过 rebase 将这些更改应用到你的分支之上,从而避免频繁使用 merge 导致的“合并提交”。
> git checkout feature-branch
> git fetch origin
> git rebase origin/main
这些操作将更新你的 feature-branch 并保持提交历史的线性。
0x02 交互式变基(Interactive Rebase)
交互式变基允许你对一系列提交进行修改、合并、删除或重新排序。这个功能对于清理提交历史非常有用。
git rebase -i HEAD\~5
这条命令会展示最近 5 次提交,允许你根据需要进行编辑。你可以:
pick: 保留提交
squash: 合并提交
reword: 修改提交信息
0x03 修正历史上的错误提交
如果发现某个历史提交有问题(例如提交信息错误或代码有问题),可以使用交互式变基来修正它。
git rebase -i
找到需要修改的提交,将其标记为 edit,然后进行相应的更改,再继续变基。
0x04 在多人协作时谨慎使用
变基会改变提交历史,因此不要轻易的对已经推送到公共仓库的分支进行变基,否则会导致其他人拉取代码时出现冲突。对于共享的历史记录,推荐使用 merge 而非 rebase。
总结
git rebase 是一个优化 Git 历史的利器,可以让你的提交历史更加清晰有序。在正确的场景下使用它,可以提升协作效率,但也需要注意不要在公共分支上轻易变基,以免引发不必要的冲突。