Git: 打开合并工具没有冲突

Git: Open merge tool without conflict

我在合并时遇到问题,但 git 没有将文件标记为冲突。 当我尝试用 git mergetool 打开文件时,git 只是说:No files need merging.

如何在三向比较中打开没有合并冲突的文件?

git mergetool 使用 .gitconfig [merge] 部分中指定的工具
git mergetool --tool-help

检查这个topic

将其中之一配置为 git diff 工具
例如:

git config --global diff.tool kdiff3

但据我所知git diff 只能进行 2 向 diff。
解决方案是检查 3 个不同的目录和 运行 kdiff3

您可以执行以下操作:

git merge --no-commit topic
git checkout --merge that_file
git mergetool that_file
git commit

也就是你避免合并成功创建commit,然后你假装在that_file中有冲突,然后你可以用git mergetool处理文件。最后,您提交结果。

遗憾的是我无法重现@Filp Stefanov 的成功,所以我用困难的方式手工完成了

(来自存储库根目录)

git merge --no-ff --no-commit <topic>
git show HEAD:<file> > <file>.ours
git show MERGE_HEAD:<file> > <file>.theirs
$(git config merge.tool) <file>.ours <file> <file>.theirs
rm <file>.ours <file>.theirs
git add <file>
git commit

大声说,

  1. 将我们的文件版本显示到标准输出并将其保存在某处
  2. 将文件的内容显示到标准输出并将其保存在某处
  3. 打开我们的合并工具,当前的,他们的
  4. 进行合并
  5. 删除 .ours/.theirs 文件
  6. 添加并提交合并文件

如果这基本上就是 git 原生所做的,我不会感到惊讶