2016-09-28 3 views
4

winmerge에서 수정 된 파일에 대한 diffs를 표시 할 수 있습니다. 그러나 새 파일의 경우 winmerge는 '왼쪽 경로가 잘못되었습니다!'라는 대화 상자를 표시합니다. 왼쪽 창을 파일의 내용으로 비어있는 오른쪽 창으로 표시하려고합니다.git에서 새로운 파일에 대해 diff를 표시하려면 winmerge를 얻으려면 어떻게해야합니까?

$ git difftool head^ newfile.txt 

WinMerge와의 대화 :

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

enter image description here

내가 자식 버전 2.8.2.windows.1

에있어 이것은 difftool 내 자식 설정입니다

나는 무엇이 누락 되었습니까?

+2

지금까지 이와 비슷한 질문을하고 있습니다. http://stackoverflow.com/a/33369083/6309 – VonC

답변

4

이 정확한 해결 방법을 찾을 수 없어서 게시하고 있습니다. 잘하면, 누군가 유용하다고 생각합니다.

새로 추가되거나 제거 된 파일에 이미 작성된 빈 파일을 단순히 전달하는 winmerge.sh 스크립트를 사용합니다. 스크립트는 내 PATH 또는 /git/cmd/ dir for git bash에있는 dir에 있습니다. (한 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 

내가 ( 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를 사용

또한 커밋하기 전에 비 추적 파일 (새 파일) diff를 위해 내가 할. -N --no-all은 색인을 생성하지만 내용이 아닌 새 파일의 경로 만 추가합니다 (삭제 된 파일을 준비하지 않으려면 --no-all 필요).

관련 문제