我可以告诉Git重用现有合并提交中的冲突解决方案吗?在提交时我被禁用了。新的合并提交在"我们的"上提供了一些额外的提交。合并的一面(但他们不应该引入新的冲突,因为他们修改了一组不同的文件)。
例如,请使用以下DAG:
m [master] Add new stuff
*
| o [old-master] Merge branch A (conflicts)
|/a [branch A]
n *
* *
*/
*
现在,我想要做的是将提交m
和m^
带入分支old-master
(以后再将其作为新主人)。我不想简单地将master
合并到old-master
,因为它会创建一个新的合并提交(尽管没有冲突)。我想以o
和m
作为父母重新创建提交a
。
新DAG应如下所示:
p [old-master] Merge branch A (same conflict resolution as old commit o)
/|
m | [master] Add new stuff
* |
| a [branch A]
n *
* *
*/
*
我不介意使用rerere,如果我之后可以告诉它记录现有合并提交的解决方案(o
)。
答案 0 :(得分:9)
实施您所要求的最简单方法可能是追溯性地重新开始:
git config rerere.enabled true # with rerere turned on,
git checkout $o^1 # rerun the original merge
git merge $o^2
git read-tree --reset -u $o: # resolve conflicts exactly as before
git commit # throwaway commit to feed the results to rerere
现在rerere已经看到你对这些冲突做了什么,
git checkout -B old-master $o^1 # rewind `old-master` to before the merge
git merge master # rerun it with current ancestry