如何使git mergetool打开的gvimdiff在选项卡中一次打开所有文件?

如何使git mergetool打开的gvimdiff在选项卡中一次打开所有文件?,git,tabs,git-merge,vimdiff,mergetool,Git,Tabs,Git Merge,Vimdiff,Mergetool,通常情况下,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

通常情况下,
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
)来解决每次一个文件中的冲突。因此,你所要求的不能以干净的方式完成。但是,可以创建一个自定义合并工具,该工具将在单个
gvim
窗口中累积来自
git mergetool
的输入。这个“解决方案”不可避免地要包含的缺陷是,它必须使
git mergetool
流相信自定义mergetool已经成功地合并了文件,即使它刚刚在gvim中打开了文件。这是必要的,以便
git mergetool
流可以在不询问任何问题的情况下进入下一个文件。因此,如果您退出gvim而不做任何更改,git仍会认为所有冲突都已解决

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

.gitconfig

[mergetool "mygvimdiff"]
    cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode=true
#!/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
mygvimdiff

[mergetool "mygvimdiff"]
    cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode=true
#!/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
用法

[mergetool "mygvimdiff"]
    cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode=true
#!/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

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

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

.gitconfig

[mergetool "mygvimdiff"]
    cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode=true
#!/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
mygvimdiff

[mergetool "mygvimdiff"]
    cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode=true
#!/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
用法

[mergetool "mygvimdiff"]
    cmd=/path/to/mygvimdiff "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    trustExitCode=true
#!/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

也许最好假装合并失败?就我所做的实验而言,mergetool仍然要求下一个文件。@Vi。那么必须有人回答mergetool的确认才能继续。也许最好假装合并失败?就我所做的实验而言,mergetool仍然要求提供下一个文件。@Vi。然后必须有人回答mergetool的确认,以proceedRelated for difftool:Related non-vimdiff specific:Related for difftool:Related non-vimdiff specific: