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
确实如此。
我们经常从 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
确实如此。