很多开源项目是被强制要求维护干净的提交树,上游容易合并你通过 pull request 提交的补丁,要实现这一点,pull 代码时需要使用 rebase 替换默认的 merge 方式。
git pull --rebase
git pull 时自动进行 rebase。
全局开启
git config --global pull.rebase true
当前分支开启
git config branch.master.rebase true
现在,如果你的工作区有未提交的代码,是不允许 pull 的,需要 stash 将工作区清理一下,等 pull 完成再恢复一下。
git stash git pull git stash pop
使用 rebase 模式相对来说麻烦一些,但是好处就是中心仓库的提交历史是线性的,特别是通过 pull request 提交补丁来协作开发的时候,接收方随时可以将补丁合并进来,完全没有 merge 模式合并补丁那么麻烦。强烈建议默认情况下使用这种模式。