Какая разница между vimdiff и vimdiff2 в git?

Какая разница между ними? В моих результатах поисковой системы говорят только о vimdiff, но команда

git mergetool 

предлагает мне обоим.

Ответ 1

vimdiff2 был введен в commit 0008669 (сентябрь 2010 г., для git 1.7.4)

Это как vimdiff, но с различными параметрами слияния (как указано в commit b2a6b71, git 1.8.2: "vimdiff и vimdiff2 отличаются только командой их слияния" ).

Он (vimdiff2) заставляет 2-стороннее слияние по сравнению с vimdiff, которое будет использовать трехстороннее слияние, если база (общий предок) обнаружена:

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"
    ;;

Обратите внимание, что commit 7c147b7 (апрель 2014 года, для git 2.1.0 августа 2014 года) фактически вводит vimdiff3:

Он похож на значение по умолчанию, за исключением того, что другие окна скрыты.
Это гарантирует, что удаленные/добавленные цвета все еще видны в главном окне слияния, но другие окна не видны.

Специально полезно с merge.conflictstyle=diff3.