如何将我的功能分支变基到 git 中的开发分支,同时尽可能减少冲突?

How to rebase my feature branch to development branch in git with least possible conflicts?

我的功能分支已超过大约 30 次或更多次提交。与此同时,在开发分支中,其他开发人员推出的其他功能很少。因此,每次在开发中发布新功能时,我都会被要求:

  1. Rebase 开发分支到我的功能分支
  2. 解决冲突
  3. 在您的功能分支中继续开发

问题

第二步是这里的鸡脖子。在变基时,它给我带来了该分支的 every 提交的冲突。这确实是迭代和冗余的。请注意,我不能总是立即对开发分支进行变基,因为我自己在分支中的工作仍在进行中。

我尝试了什么?

  1. squash 并尽可能减少我的提交(但这帮助最少,因为大多数时候没有什么可压缩的)
  2. 为了 stash 我正在进行的更改,重新开发,然后取消隐藏我的更改。 (但在这里,我也遇到了冲突)
  3. 使用 -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 从开发分支合并 到功能分支].它将提供更多信息。