git多人协作:维护干净的提交树

很多开源项目是被强制要求维护干净的提交树,上游容易合并你通过 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 模式合并补丁那么麻烦。强烈建议默认情况下使用这种模式。


git