1

通常git -c merge.tool=gvimdiff mergetool以批处理模式打开要合并的文件:

Normal merge conflict for '...':
  {local}: modified file
  {remote}: modified file
4 files to edit
... seems unchanged.
Was the merge successful? [y/n] n
merge of ... failed
Continue merging other unresolved paths (y/n) ? y
Normal merge conflict for '...':
  {local}: modified file
  {remote}: modified file
4 files to edit
modules ... seems unchanged.
Was the merge successful? [y/n] n
merge of modules ... failed
Continue merging other unresolved paths (y/n) ? n

如何使用gvim -p file1 file2包含要合并的每个文件的四个窗格排列的选项卡(如 in )一次打开所有文件?

4

1 回答 1

0

git mergetoolflow 旨在一次解决一个文件中的冲突。因此,您所要求的不能以干净的方式完成。但是,可以创建一个自定义合并工具,它将git mergetool在单个gvim窗口中累积输入。这个“解决方案”不可避免地必须包含的黑客是它必须让git mergetool流程相信自定义合并工具已成功合并文件,即使它刚刚在 gvim 中打开了文件。这是必要的,以便git mergetool流程继续到下一个文件而不询问任何问题。因此,如果你退出 gvim 而不做任何更改,git 仍然会认为所有冲突都已解决。

这种自定义合并工具的草稿版本(在不同的 gvim 窗口中打开文件,而不是在选项卡中打开文件)如下:

.gitconfig

[mergetool "mygvimdiff"]
    cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode=true

mygvimdiff

#!/bin/bash

gvim -d -c "wincmd J" "$@"

# wait till gvim loads the temporary files before
# the git mergetool script deletes them
sleep 1

exit 0

用法

git mergetool -t mygvimdiff
于 2016-09-01T06:02:15.037 回答