通常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
)中的所有文件打开一个文件?
答案 0 :(得分:0)
git mergetool
流程旨在一次解决一个文件中的冲突。因此,你要求的东西不能以干净的方式完成。但是,可以创建自定义合并工具,这将在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