위의 이전 "diff.external"구성 답변 을 완료하려면
으로 야쿱 언급 , Git1.6.3 도입 자식 difftool , 원래 2008 년 9 월에 제안을 :
USAGE = '[--tool=tool] [--commit=ref] [--start=ref --end=ref] [--no-prompt] [file to merge]'
( --extcmd
이 답변의 마지막 부분 참조 )
$LOCAL
시작 개정판 $REMOTE
의 파일 내용을 포함하고 종료 개정판의 파일 내용을 포함합니다.
$BASE
wor에 파일 내용이 들어 있습니다.
기본적으로 git-mergetool
git index / worktree에서 작동하도록 수정되었습니다.
당신도 개최 또는 unstaged 변경하고 나란히은 diff 뷰어의 변화 (예를 들어보고 싶습니다 때이 스크립트에 대한 일반적인 사용 사례는 xxdiff
, tkdiff
, 등).
git difftool [<filename>*]
또 다른 유스 케이스는 동일한 정보를보고 싶지만 임의의 커밋을 비교하는 경우입니다 (이것은 리바 그 구문 분석이 더 좋을 수있는 부분입니다)
git difftool --start=HEAD^ --end=HEAD [-- <filename>*]
마지막 사용 사례는 현재 작업 트리를 HEAD 이외의 다른 태그 (예 : 태그)와 비교하려는 경우입니다.
git difftool --commit=v1.0.0 [-- <filename>*]
참고 : Git 2.5 이후로 git config diff.tool winmerge
는 충분합니다!
" git mergetool winmerge "를 참조하십시오
그리고 힘내 1.7.11 이후 , 당신은 옵션이 --dir-diff
두 가지의 임시 디렉토리를 채우는 대신 파일 쌍에 한 번 외부 도구의 인스턴스를 실행 한 후 한 번에 두 개의 디렉토리 계층 구조를 비교할 수있는 외부은 diff 도구를 생성하기 위해.
힘내 2.5 전에 :
difftool
사용자 정의 diff 도구 로 구성 하는 실제 사례 :
C:\myGitRepo>git config --global diff.tool winmerge
C:\myGitRepo>git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --global difftool.prompt false
PATH의 디렉토리 부분에 winmerge.sh가 저장되어있는 경우 :
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -u -e "$1" "$2" -dl "Local" -dr "Remote"
다른 도구 (kdiff3, P4Diff, ...)가있는 경우 다른 쉘 스크립트와 적절한 difftool.myDiffTool.cmd
구성 지시문을 작성하십시오.
그런 다음 diff.tool
구성으로 도구를 쉽게 전환 할 수 있습니다 .
또한이 가지고 데이브에 의해 블로그 항목 기타 세부 사항을 추가 할 수 있습니다.
(또는 옵션에 대한 이 질문winmergeu
)
이 설정의 관심은 winmerge.sh
스크립트입니다 . 특수한 경우를 고려 하여 스크립트 를 사용자 정의 할 수 있습니다.
예를 들어 아래 의 David Marble 답변을 참조하십시오 .
- 출발지 또는 목적지에있는 새 파일
- 출발지 또는 목적지에서 파일을 제거했습니다.
Kem Mason 이 그의 답변 에서 언급 했듯이 다음 --extcmd
옵션 을 사용하여 래퍼를 피할 수도 있습니다 .
--extcmd=<command>
diff를보기위한 사용자 정의 명령을 지정하십시오. git-difftool
구성된 기본값을 무시 $command $LOCAL $REMOTE
하고이 옵션을 지정하면 실행 됩니다.
예를 들어, 도구 gitk
를 실행 / 사용하는 diff
방법 입니다.