如何将我的功能分支变基到 git 中的开发分支,同时尽可能减少冲突?
How to rebase my feature branch to development branch in git with least possible conflicts?
我的功能分支已超过大约 30 次或更多次提交。与此同时,在开发分支中,其他开发人员推出的其他功能很少。因此,每次在开发中发布新功能时,我都会被要求:
- Rebase 开发分支到我的功能分支
- 解决冲突
- 在您的功能分支中继续开发
问题
第二步是这里的鸡脖子。在变基时,它给我带来了该分支的 every 提交的冲突。这确实是迭代和冗余的。请注意,我不能总是立即对开发分支进行变基,因为我自己在分支中的工作仍在进行中。
我尝试了什么?
- 到
squash
并尽可能减少我的提交(但这帮助最少,因为大多数时候没有什么可压缩的)
- 为了
stash
我正在进行的更改,重新开发,然后取消隐藏我的更改。 (但在这里,我也遇到了冲突)
- 使用
-preserve-merges
和 rebase。 (但是这里的人都喊着用这个完全气馁)
那么,当功能分支本身有大量提交时,在冲突最少的情况下处理将开发变基到功能分支的最佳方法是什么。我是新手,所以回复一个有用的解释(或link)将对继续进行有很大帮助。
工作流程合理(变基)。
但是矛盾不应该每次都一遍又一遍的解决。
为此,你有 git rerere
: activate it (git config --global rerere.enabled true
), resolve the conflict one last time (or do a manual re-training, or use contrib/rerere-train.sh
),你的下一个变基将在你的下一个变基中重新使用这些冲突解决方案。
我建议保持你的功能小(一两天),你的功能分支也会很小。
另一种方法是,不是每次将某些东西推送到开发分支时都进行变基,而是有时,或者仅在合并之前进行一次。
同样,您需要保持功能较小,否则您会同时遇到太多冲突。
关于你的问题,你不能最小化变基中的冲突数量。如果有冲突,你无法避免它们。
但是有一种方法 git 可以帮助您:我建议您启用 rerere,它代表 重新使用记录的分辨率。这样,git 记录了您如何解决冲突,下次出现冲突时,重新应用解决方案,以便您发现冲突已经解决。这可以加快您的工作流程。
您可以通过
全局启用 rerere
git config --global rerere.enabled true
在执行 git rebase[=14= 之前尝试 git 从开发分支合并 到功能分支].它将提供更多信息。
我的功能分支已超过大约 30 次或更多次提交。与此同时,在开发分支中,其他开发人员推出的其他功能很少。因此,每次在开发中发布新功能时,我都会被要求:
- Rebase 开发分支到我的功能分支
- 解决冲突
- 在您的功能分支中继续开发
问题
第二步是这里的鸡脖子。在变基时,它给我带来了该分支的 every 提交的冲突。这确实是迭代和冗余的。请注意,我不能总是立即对开发分支进行变基,因为我自己在分支中的工作仍在进行中。
我尝试了什么?
- 到
squash
并尽可能减少我的提交(但这帮助最少,因为大多数时候没有什么可压缩的) - 为了
stash
我正在进行的更改,重新开发,然后取消隐藏我的更改。 (但在这里,我也遇到了冲突) - 使用
-preserve-merges
和 rebase。 (但是这里的人都喊着用这个完全气馁)
那么,当功能分支本身有大量提交时,在冲突最少的情况下处理将开发变基到功能分支的最佳方法是什么。我是新手,所以回复一个有用的解释(或link)将对继续进行有很大帮助。
工作流程合理(变基)。
但是矛盾不应该每次都一遍又一遍的解决。
为此,你有 git rerere
: activate it (git config --global rerere.enabled true
), resolve the conflict one last time (or do a manual re-training, or use contrib/rerere-train.sh
),你的下一个变基将在你的下一个变基中重新使用这些冲突解决方案。
我建议保持你的功能小(一两天),你的功能分支也会很小。 另一种方法是,不是每次将某些东西推送到开发分支时都进行变基,而是有时,或者仅在合并之前进行一次。 同样,您需要保持功能较小,否则您会同时遇到太多冲突。
关于你的问题,你不能最小化变基中的冲突数量。如果有冲突,你无法避免它们。
但是有一种方法 git 可以帮助您:我建议您启用 rerere,它代表 重新使用记录的分辨率。这样,git 记录了您如何解决冲突,下次出现冲突时,重新应用解决方案,以便您发现冲突已经解决。这可以加快您的工作流程。
您可以通过
全局启用 rereregit config --global rerere.enabled true
在执行 git rebase[=14= 之前尝试 git 从开发分支合并 到功能分支].它将提供更多信息。