최근에 GitExtension 2.46을 사용하고 있었지만 동일한 Git 버전은 1.9.4.msysgit.2입니다. Git 명령 만 사용하기 위해 GitExtension을 제거하고 Git 및 KDiff3 의 최신 버전을 설치했습니다 .
병합하고 충돌이 발생하면 다음 명령을 실행합니다.
$ git mergetool
그런 다음 메시지가 나타납니다.
병합 도구 kdiff3은 ‘kdiff3’으로 사용할 수 없습니다.
나는 그것이 KDiff3 경로에 있어야한다고 생각합니다.
환경
- 운영체제 : Windows 10
- 힘내 2.6.1.windows.1
- KDiff3 0.9.98 (64 비트)
질문 :
-
충돌 파일의 LOCAL , REMOTE , BASE 및 MERGED
$ git mergetool
버전으로 KDiff3 GUI를 열려면 .gitconfig 파일에서 무엇을 구성해야 합니까? -
diff-tool을 사용하도록 어떻게 구성합니까?
답변
이 사이트는 mergetool 과 difftool 거의 도움이되었습니다 . 전역 구성을 사용했지만 문제없이 리포지토리에서 사용할 수 있습니다. 다음 명령 만 실행하면됩니다.
git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global mergetool.kdiff3.trustExitCode false
git config --global diff.guitool kdiff3
git config --global difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global difftool.kdiff3.trustExitCode false
의 사용 trustExitCode
옵션을 사용하면 DIFF 도구를 반환 수행하려는 작업에 따라 달라집니다. 에서 문서 :
git-difftool 은 각 파일에서 diff 도구를 개별적으로 호출합니다. diff 도구로보고 된 오류는 기본적으로 무시됩니다. 호출 된 diff 도구가 0이 아닌 종료 코드를 반환 할 때 git-difftool을 종료 하려면 –trust-exit-code 를 사용하십시오 .
답변
@Joseph의 답변 을 확장 하려면 다음을 수행하십시오 .
이 명령을 적용하면 전역 .gitconfig
파일에 다음 줄이 표시됩니다 (프로세스 속도를 높이기 위해 파일로 복사하면됩니다) .
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = C:/Program Files/KDiff3/kdiff3.exe
trustExitCode = false
[diff]
guitool = kdiff3
[difftool "kdiff3"]
path = C:/Program Files/KDiff3/kdiff3.exe
trustExitCode = false
답변
Mac 사용자
다음은 @Joseph의 대답이지만 기본 Mac 설치 경로는 다음과 같습니다. kdiff3
(복사하여 붙여 넣어 한 번에 실행할 수 있습니다.)
git config --global --add merge.tool kdiff3
git config --global --add mergetool.kdiff3.path "/Applications/kdiff3.app/Contents/MacOS/kdiff3"
git config --global --add mergetool.kdiff3.trustExitCode false
git config --global --add diff.guitool kdiff3
git config --global --add difftool.kdiff3.path "/Applications/kdiff3.app/Contents/MacOS/kdiff3"
git config --global --add difftool.kdiff3.trustExitCode false
답변
문제는 Git이 % PATH %에서 KDiff3을 찾을 수 없다는 것입니다.
전형적인 유닉스 설치 모든 실행은 여러 공지 사항 (상주 /bin/
, /usr/bin/
, /usr/local/bin/
, 등) 중 하나는 단순히 (예를 들어 쉘 프로세서에 이름을 입력하여 프로그램을 호출 할 수있다 cmd.exe
:).
Microsoft Windows에서 프로그램은 일반적으로 전용 경로에 설치되므로 세션을 입력 kdiff3
하고 cmd
KDiff3을 실행할 수 없습니다 .
어려운 해결책 : Git에 전체 경로를 지정하여 KDiff3을 찾을 위치를 알려야합니다 kdiff3.exe
. 불행히도, Git은 설정에서 경로 지정의 공백을 좋아하지 않으므로 마지막으로 이것을 필요로 할 때 고대 “C : \ Progra ~ 1 … \ kdiff3.exe”가 늦었 던 것처럼 끝났습니다. 1990 년대 🙂
간단한 해결책 : 컴퓨터 설정을 편집하고 % PATH %에 kdiff3.exe가있는 디렉토리를 포함하십시오. 그런 다음 cmd.exe에서 이름으로 호출하고 Git을 실행할 수 있는지 테스트하십시오.
답변
커맨드 라인 매개 변수를 추가해야하거나 KDiff3이 파일없이 열리고 기본, 로컬 및 원격을 요구합니다. TortoiseHg 와 함께 제공된 버전을 사용했습니다 .
또한 좋은 오래된 DOS 8.3 파일 이름을 사용해야했습니다.
[merge]
tool = kdiff3
[mergetool "kdiff3"]
cmd = /c/Progra~1/TortoiseHg/lib/kdiff3.exe $BASE $LOCAL $REMOTE -o $MERGED
그러나 이제는 올바르게 작동합니다.
답변
Git 2.20 (Q4 2018)부터 kris ‘ 답변 을 수정하려면 올바른 명령 git mergetool
은 다음과 같습니다.
git config --global merge.guitool kdiff3
” git mergetool
” --[no-]gui
처럼 ” git difftool
” 옵션 을 사용하는 법을 배웠기 때문 입니다.
참조 c217b93 커밋 , 57ba181 커밋 , 063f2bd 커밋 에 의해 (2018년 10월 24일) 덴튼 리우 ( Denton-L
) .
( Junio C gitster
Hamano 에 의해 병합 – 커밋 87c15d1 , 2018 년 10 월 30 일)
mergetool
:-g/--[no-]gui
인수로 수락옵션을
difftool
허용하는 방법에 따라 변수를 사용하여 대신 기본 mergetool을 찾으려면 동일한 옵션을 사용하십시오 .-g/--[no-]gui
mergetool
merge.guitool
merge.tool
답변
(WSL git에서 kdiff3을 사용하는 방법을 찾으려고 할 때 여기에 도착하여 최종 조각을 얻었으므로 다른 사람을 위해 내 솔루션을 게시 할 것입니다.
kdiff3을 WSL git의 diff / merge 도구로 사용하는 방법
Windows 업데이트 1903을 사용하면 훨씬 쉽습니다. wslpath를 사용하면 Windows 측에서 \ wsl $를 통해 WSL 파일 시스템에 액세스 할 수 있으므로 Windows에서 WSL로 TMP를 공유 할 필요가 없습니다.
[merge]
renormalize = true
guitool = kdiff3
[diff]
tool = kdiff3
[difftool]
prompt = false
[difftool "kdiff3"]
# Unix style paths must be converted to windows path style
cmd = kdiff3.exe \"`wslpath -w $LOCAL`\" \"`wslpath -w $REMOTE`\"
trustExitCode = false
[mergetool]
keepBackup = false
prompt = false
[mergetool "kdiff3"]
path = kdiff3.exe
trustExitCode = false
Windows 업데이트 1903 이전
WSL에서 git 용 diff / merge 도구로 Windows 10에 설치된 kdiff3을 사용하는 단계 :
- kdiff3 설치 디렉토리를 Windows 경로에 추가하십시오.
- WSLENV Windows 환경 변수에 TMP를 추가하십시오 (WSLENV = TMP / up). TMP 디렉토리는 git에서 이전 버전의 파일과 같은 임시 파일을 위해 사용되므로 경로가 Windows 파일 시스템에 있어야 경로가 작동합니다.
- .bashrc에서 TMPDIR을 TMP로 설정하십시오.
# If TMP is passed via WSLENV then use it as TMPDIR
[[ ! -z "$WSLENV" && ! -z "$TMP" ]] && export TMPDIR=$TMP
- kdiff3를 호출 할 때 unix-path를 windows-path로 변환하십시오. 내 .gitconfig 샘플 :
[merge]
renormalize = true
guitool = kdiff3
[diff]
tool = kdiff3
[difftool]
prompt = false
[difftool "kdiff3"]
#path = kdiff3.exe
# Unix style paths must be converted to windows path style by changing '/mnt/c/' or '/c/' to 'c:/'
cmd = kdiff3.exe \"`echo $LOCAL | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\" \"`echo $REMOTE | sed 's_^\\(/mnt\\)\\?/\\([a-z]\\)/_\\2:/_'`\"
trustExitCode = false
[mergetool]
keepBackup = false
prompt = false
[mergetool "kdiff3"]
path = kdiff3.exe
trustExitCode = false