2016-09-28 16 views
4

winmergeに変更ファイルの差分を表示させることができます。しかし、新しいファイルの場合、winmergeは 'Left path is invalid!'というダイアログを表示します。私はそれがファイルの内容で空の右のペインとして左のペインを表示したい。gitで新しいファイルのdiffを表示するにはwinmergeを取得するには?

$ git difftool head^ newfile.txt 

のWinMergeのダイアログ:

enter image description here

私はGitのバージョンによ

2.8.2.windows.1

これはdifftoolのための私のgit configです:

[diff] 
    tool = winmerge 
[difftool] 
    prompt = false 
[difftool "winmerge"] 
    cmd = \"C:\\Program Files (x86)\\WinMerge\\WinMergeU.exe\" -e -ub -wl \"$LOCAL\" \"$REMOTE\" 

私は何が欠けていますか?

+2

これまでのところ、このような質問があります。http://stackoverflow.com/a/33369083/6309 – VonC

答えて

4

この正確な回避策が見つかりませんでしたので、私はこれを投稿しています。うまくいけば、誰かがそれが有用だと思っています。

私はwinmerge.shスクリプトを使用して、新しく追加された(または削除された)ファイルのために既に作成された空のファイルを単純に渡します。スクリプトは、私のPATHまたは/git/cmd/ dirのgit bashにあるディレクトリにあります。

(一方hereに類似)winmerge.sh

#!/bin/sh 
# $1 is $LOCAL 
# $2 is $REMOTE 
NULL="/dev/null" 
empty="$HOME/winmerge.empty" 
if [ "$2" = "$NULL" ] ; then 
    # added 
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl -wr "$1" "$empty" 
elif [ "$1" = "$NULL" ] ; then 
    # removed 
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$empty" "$2" 
else 
    # modified 
    "D:/setups/WinMerge/WinMergeU.exe" -e -ub -wl "$1" "$2" 
fi 

Iは(c:/users/<username>である)、このパス$HOMEで空のファイルwinmerge.emptyを保ちます。

.gitconfigshスクリプトを使用します。

.gitconfig

[diff] 
    tool = winmerge 
[difftool] 
    prompt = false 
[difftool "winmerge"] 
    cmd = winmerge.sh "$LOCAL" "$REMOTE" 

注:差分人跡未踏のファイル(新しいファイル)に

もコミットする前に、私は

$ git add -N --no-all . 

その後、difftoolを使用します。 -N --no-allは、新しいファイルのパスをインデックスに追加するだけで、コンテンツは追加しません(--no-allは削除されたファイルをステージングしないようにする必要があります)。

関連する問題