解决合并请求中的合并冲突

时间:2019-05-03 06:57:40

标签: git

我通常的处理合并请求中合并冲突的方法是检出target_branch并从存储库中进行合并。然后将target_branch合并到我的feature_branch中。现在,我已经准备好解决feature_branch上的冲突,但是我也将所有其他更改也推送到了target_branch上。

是否有一种方法只能获取引起冲突的更改,以便我不重写同事提交的历史记录?

1 个答案:

答案 0 :(得分:1)

通常,我使用rebase来解决这个问题。假设您从类似以下内容开始:

target_branch  ...--A---B---C---D---E
                         \
feature_branch            F---G

然后执行以下操作:

git checkout feature_branch
git rebase target_branch

将产生以下结果:

target_branch  ...--A---B---C---D---E
                                     \
feature_branch                        F'--G'

这对您有两个有用的属性:

  1. target_branch上的所有提交均未得到重写,因此保留了原始作者;和

  2. 先重写第一个F(成为F',用新的父项E代替B),然后再重写G(成为{{ 1}}(使用新的父项G'而不是F')可以逐步解决与FCD的任何冲突。

结果是在E上进行了两次提交,可以轻松地将其应用于feature_branch,而不会产生冲突。

请注意,如果您已经将target_branch推到了遥控器,则历史记录的重写意味着您必须强制feature_branch(最好是{{1} })这些新提交。