我想将一个大的专题分支合并到主分支,但我希望有一个单独的提交显示冲突解决的方式。目标是有一个提交显示“这些文件发生了冲突以及它们是如何冲突的”,下一个提交将显示“这些冲突是如何被解决的”。也就是说,“第一个提交将包含冲突标记”。
这样做的原因是,大的专题分支已经经过了审查和测试,主分支也经过了同样的步骤。在合并中,我们只想审查那些需要工作(冲突和其他合并工作)的部分。
到目前为止,我正在进行以下操作:
git checkout master
git checkout -b merge-from-topic
git merge topic
为了记录有冲突的文件,我使用一个临时文件:
git diff --name-only --diff-filter=U >conflicts.txt
首先,我会将那些带有冲突标记的文件添加到一个提交中:
xargs git add <conflicts.txt
git commit
然后我创建了另一个分支(用于审查目的),我想在其中进行冲突解决:
git checkout -b resolve-merge-from-topic
为了解决冲突,我尝试了
xargs git reset HEAD^ -- <conflicts.txt
然而,git mergetool 告诉我没有文件需要合并,尽管我的工作树中的文件有冲突标记。
我该如何恢复在 conflicts.txt 中列出的文件,以便可以在它们上面使用 git mergetool?
我也愿意尝试其他方法来达到“冲突解决的单独提交”效果。
git log -p
所示更多的内容,你可以随时使用git diff sha_of_merge sha_of_merge^1
或git diff sha_of_merge sha_of_merge^2
来查看相对于合并的两个父提交所引入的更改。换句话说,要使用git
提供给你的工具,不要在你的仓库中添加不必要和有问题的东西。 - twalberggit show #mergeCommit
是答案,我在这里学到的https://haacked.com/archive/2014/02/21/reviewing-merge-commits/ 基本上它应该能够仅显示未包含在合并提交(源分支和目标分支)的任何“父”提交中的更改。 这基本上是冲突解决更改(hunks)。 我知道这不完全是您要求的内容,但也许目标是相同的 - 能够审查合并提交。 - LordMsz