git中vimdiff和vimdiff2有什么区别?

nom*_*ack 17 git vim vimdiff

他们之间有什么区别?我的搜索引擎结果只讨论vimdiff,但命令

git mergetool 
Run Code Online (Sandbox Code Playgroud)

给我两个.

Von*_*onC 19

vimdiff20008669提交(2010年9月,git 1.7.4)

就像vimdiff,但有不同的合并选项(如提交b2a6b71中所述,git 1.8.2:"vimdiff和vimdiff2仅因其合并命令而不同").

It(vimdiff2)强制进行双向合并,如果检测到基础(共同祖先)vimdiff,则将使用3向合并:

gvimdiff|vimdiff)
    if $base_present
    then
        "$merge_tool_path" -f -d -c 'wincmd J' \
            "$MERGED" "$LOCAL" "$BASE" "$REMOTE"
    else
        "$merge_tool_path" -f -d -c 'wincmd l' \
            "$LOCAL" "$MERGED" "$REMOTE"
    fi
    ;;
gvimdiff2|vimdiff2)
    "$merge_tool_path" -f -d -c 'wincmd l' \
        "$LOCAL" "$MERGED" "$REMOTE"
    ;;
Run Code Online (Sandbox Code Playgroud)

请注意,提交7c147b7(2014年4月,对于2014年8月的Git 2.1.0)实际上也引入vimdiff3了:

除了隐藏其他窗口外,它与默认值类似.
这可确保在主合并窗口中仍然可以看到已删除/添加的颜色,但其他窗口不可见.

特别有用merge.conflictstyle=diff3.