git pull --rebase origin master 似乎每次都从头开始变基

git pull --rebase origin master appears to rebase from the beginning every time

我们经常从 master 分支出来处理大型功能分支。这些功能分支通常在与 master 合并之前工作数天甚至数周(尽管最佳实践表明我们需要尽可能频繁地合并,但实际上它可能会有所不同)。

因此,我们尽可能地尝试 git pull --rebase origin master 以便与主人保持同步。但是,我们偶尔会遇到这样的情况,例如:

1) 从 master 分支到 feature/new-branch

2) 在 feature/new-branch 中进行更改并提交更改。

3) git pull --rebase origin master 将提交置于 master 之上。修复所有冲突和 git add . + git rebase --continue

4) 在 feature/new-branch 中进行更多更改并提交更改。

5) git pull --rebase origin master 再一次。

但是,在步骤 5),该过程要求我们解决步骤 3) 中的相同冲突。这可能很乏味。

这是正确的最佳实践 git 流程吗?如果不是,我们还能做些什么来提高流程的效率?

如果您发现自己修复了相同的冲突,请尝试激活 git rerere ("reuse recorded 重新解决方案").

git config --global rerere.enabled true

那会为你记录那些冲突的解决。

查看更多信息“Fix conflicts only once with git rerere" from Christophe Porteneuve

if you prefer rerere to auto-stage files it solved (I do), you can ask it to: you just need to tweak your configuration like so:

git config --global rerere.autoupdate true

您还可以 git merge 将 master 分支添加到您的功能分支中,以保持获取最新更改并轻松过渡到 master。

对于很长的 运行 分支(你不应该这样做,但是嘿,现实并不完美 :D)我通常更喜欢这个选项以避免重写整个分支历史,--rebase 确实如此。