2016-08-31 33 views
1

通常git -c merge.tool=gvimdiff mergetool打開文件由一個被合併的,在批處理模式下:如何使gvimdiff通過git 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

相關的difftool:http://stackoverflow.com/questions/1220309/git-difftool-open-all-diff-files-immediately-not-in-serial –

回答

0

git mergetool flow設計用於一次解決一個文件中的衝突。因此,你所要求的不能以一種乾淨的方式來完成。但是可以創建一個自定義的mergetool,它將在一個gvim窗口中累積來自git mergetool的輸入。這個「解決方案」不可避免地要包含的竅門是它必須使流程相信定製的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" "[email protected]" 

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

exit 0 

用法

git mergetool -t mygvimdiff 
+0

也許不如假不成功的合併?據我所試驗,mergetool仍然要求下一個文件。 –

+0

@Vi。然後有人必須回答mergetool的確認才能繼續 – Leon

相關問題