Git - 当功能分支包含大量更改时,如何避免将功能分支合并到开发时发生冲突

Git - how to avoid conflict when merging feature branch to dev when feature branch contains lots of changes

我是版本控制的初学者,我正在使用 SourceTree

我要将我的更改从功能分支合并到开发分支。
由于我在功能分支中做了很多更改,我很确定会有冲突。

我正在考虑两种方式。

1. merge feature branch to dev branch directly and resolve the conflict and then commit
 
2. merge dev branch to feature branch first. After I resolve the conflict in feature branch, 
   I merge it to dev branch so that there should be no conflicts.

我应该使用哪一个?这两种方式的优缺点是什么?

Rebase 你的功能分支在 dev.

与其尝试通过合并一次解决所有提交,变基会将您的个人提交一次合并到开发者之上,从而允许您处理小的孤立部分的冲突。当您解决每次提交中的冲突时,您可以 运行 您的测试以确保在继续下一次提交之前一切仍然有效。

一般来说,变基以更新您的分支。

Since I've made lots of changes in feature branch and I am quite sure there would be conflicts.

这就是问题的根源:让功能分支偏离其上游分支太远。特性分支要经常更新,避免漂移过多,尽快合并。这意味着保持功能分支的范围较小。

与其尝试处理整个分支,不如将其分解为更小的功能分支。确定可以作为自己的分支隔离和提交的更改。使用 cherry-pick 将它们移动到一个新分支,使用 git rebase -i 将它们从你的怪物分支中删除,测试并单独合并它们。继续,直到您的功能分支易于管理。

您的分支将更易于审查和管理,并且通过将每个更改作为自己的分支进行,将更好地考虑更改。

例如,如果作为功能的一部分进行重构,请将该重构提取到一个新分支中。或者,如果您编写了一个新组件,请在它自己的分支中进行。或者您发现了一个切线相关的错误并修复了它,在它自己的分支中进行修复。