我通常的处理合并请求中合并冲突的方法是检出target_branch并从存储库中进行合并。然后将target_branch合并到我的feature_branch中。现在,我已经准备好解决feature_branch上的冲突,但是我也将所有其他更改也推送到了target_branch上。
是否有一种方法只能获取引起冲突的更改,以便我不重写同事提交的历史记录?
答案 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'
这对您有两个有用的属性:
target_branch
上的所有提交均未得到重写,因此保留了原始作者;和
先重写第一个F
(成为F'
,用新的父项E
代替B
),然后再重写G
(成为{{ 1}}(使用新的父项G'
而不是F'
)可以逐步解决与F
,C
和D
的任何冲突。
结果是在E
上进行了两次提交,可以轻松地将其应用于feature_branch
,而不会产生冲突。
请注意,如果您已经将target_branch
推到了遥控器,则历史记录的重写意味着您必须强制feature_branch
(最好是{{1} })这些新提交。