我的功能分支已超过30次或更多次提交。与此同时,在开发分支中,其他开发人员也没有推出其他功能。因此,每次在开发时发布新功能时,我都会被要求:
问题
第二步是这里的鸡脖子。在变基础上,它给了我那个分支的每次提交的冲突。这实际上是迭代和冗余的。注意,我不能总是立即修改开发分支,因为我在分支中的工作仍在进行中。
我尝试了什么?
squash
并尽可能减少我的提交(但这有助于减少,因为大多数时候没有任何东西可以压制)stash
我正在进行的更改,并重新开发然后解除我的更改。 (但在这里,我也会遇到冲突)-preserve-merges
与rebase一起使用。 (但是这里的每个人都大声说使用它完全是气馁)因此,当功能分支本身有大量提交时,处理功能分支的变形问题的最佳方法是什么,冲突最少。我是一个更新鲜的人,所以回复一个有用的解释(或链接)将有助于继续。
答案 0 :(得分:7)
工作流程合理(rebase) 但冲突不应该一次又一次地解决。
为此,您有git rerere
:激活它(git config --global rerere.enabled true
),最后一次解决冲突(或执行manual re-training或use contrib/rerere-train.sh
),以及下一个rebase将在你的下一个rebase中重新使用这些冲突解决方案。
答案 1 :(得分:3)
我建议保持您的功能小(一两天),您的功能分支也会很小。 另一种方法是不是每次将某些东西推到开发分支时,而是仅在有时,或仅在合并之前一次。 同样,您需要保持较小的功能,否则您将同时拥有太多冲突。
关于您的问题,您无法最大限度地减少rebase中的冲突数量。如果存在冲突,则无法避免。
但git有一种方法可以帮助您:我建议您启用rerere代表重用已记录的分辨率。有了这个,git会记录您如何解决冲突,并在下次出现冲突时重新应用解决方案,以便您找到已解决的冲突。这样可以加快您的工作流程。
您可以使用
全局启用rereregit config --global rerere.enabled true
答案 2 :(得分:0)
在执行 git rebase 之前,尝试从开发分支 git merge 进入功能分支。它会提供更多信息。