KDiff3를 git에 대한 병합 도구 및 diff 도구로 구성하려면 어떻게 해야 합니까?
최근에 저는 GitExtension 2.46을 사용하고 있었지만 동일한 Git 버전은 1.9.4.msysgit.2입니다.Git 명령어만 사용하고자 GitExtension을 제거하고 Git 및 KDiff3의 최신 버전을 설치했습니다.
병합을 하고 충돌이 발생하면 다음 명령을 실행합니다.
git mergetool
그러면 다음과 같은 메시지가 표시됩니다.
병합 도구 kdiff3는 'kdiff3'로 사용할 수 없습니다.
KDiff3 길로 가야 할 것 같습니다.
환경
- OS: 윈도우 10
- Git 2.6.1.windows.1
- KDiff30.9.98(64비트)
질문:
에서 .gitconfig 해야 할 은 입니까?
git mergetool
충돌된 파일의 LOCAL, REMOTE, BASE 및 MERGED 버전을 사용하여 KDiff3 GUI를 여시겠습니까?Diff 도구로 사용하도록 구성하려면 어떻게 해야 합니까?
이 사이트들은 거의 합병 도구와 다른 도구에 매우 도움이 되었습니다.글로벌 구성을 사용했지만 리포지토리에서 문제 없이 사용할 수 있습니다.다음 명령만 실행하면 됩니다.
git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "C:/Program Files/KDiff3/bin/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/bin/kdiff3.exe"
git config --global difftool.kdiff3.trustExitCode false
최신 버전 kdiff3는 실행 파일을 응용 프로그램 폴더 C:/Program Files/KDIf3의 루트에서 응용 프로그램 폴더 내의 bin/폴더로 이동했습니다.이전 버전을 사용하는 경우 위의 경로에서 "bin/"을 제거합니다.
옵션의 사용은 diff 도구가 반환될 때 수행할 작업에 따라 달라집니다.설명서에서:
git-difftool은 각 파일에서 개별적으로 diff 도구를 호출합니다.diff 도구에서 보고된 오류는 기본적으로 무시됩니다.호출된 diff 도구가 0이 아닌 종료 코드를 반환할 때 git-diff 도구를 종료하려면 --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 @Joseph의 Mac 경로 위치입니다.kdiff3
(이 파일을 복사하여 붙여넣고 한 번에 실행할 수 있습니다.)
git config --global merge.tool kdiff3
git config --global mergetool.kdiff3.path "/Applications/kdiff3.app/Contents/MacOS/kdiff3"
git config --global mergetool.kdiff3.trustExitCode false
git config --global diff.guitool kdiff3
git config --global difftool.kdiff3.path "/Applications/kdiff3.app/Contents/MacOS/kdiff3"
git config --global difftool.kdiff3.trustExitCode false
2021년 업데이트:
3분기) 에서는 Git 2.33 (2021년 3분기) 윈도우.mergetool
▁find니▁▁to▁has를 찾는 방법을 배웠습니다.kdiff3.exe
이 발견한 winmerge.exe
.
git config --global merge.tool kdiff3
충분합니다.
마이클 쉰들러()michaelcompressconsult
의 커밋 47eb4c6(2021년 6월 7일)을 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- commit b7bd70d, 2021년 7월 8일)
Windows에서도 kdiff3가 작동하도록
mergetools/kdiff3
합니다.사인 오프 바이: 마이클 쉰들러 michael@compressconsult.com
원주민
kdiff3
mergetool
Windows에서 를 찾을 수 없습니다.
메시지 "The merge tool kdiff3 is not available as 'kdiff3'
가 표시됩니다.바이너리 이름을 번역하여 WinMerge 검색 경로에서 찾듯이 kdiff3도 마찬가지로 검색합니다.
2018:
Kris의 답변을 수정하려면 Git 2.20(Q4 2018)부터 시작하여 다음에 대한 적절한 명령입니다.git mergetool
될 것이다
git config --global merge.guitool kdiff3
그것은 " 때문입니다.git mergetool
시험을 보는 법을 배웠습니다.--[no-]gui
"와 같은 옵션git difftool
합니다.
commit c217b93, commit 57ba181, commit 063f2bd (2018년 10월 24일) by Denton Denton-L
Liu ()를 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 87c15d1, 2018년 10월 30일 커밋)
mergetool
수락-g/--[no-]gui
의론으로서방법에 따라
difftool
을 받아들입니다.-g/--[no-]gui
옵션, 만들기mergetool
동일한 옵션을 사용합니다.merge.guitool
변수 대신 기본 병합 도구를 찾습니다.merge.tool
.
문제는 Git가 %PATH%에서 KDIf3를 찾을 수 없다는 것입니다.
일반적인 유닉스 설치에서 모든 실행 파일은 여러 잘 알려진 위치에 있습니다./bin/
,/usr/bin/
,/usr/local/bin/
예를 들어, 셸 프로세서에 프로그램 이름을 입력하면 프로그램을 호출할 수 있습니다.cmd.exe
:) ).
Microsoft Windows에서 프로그램은 일반적으로 전용 경로에 설치되므로 단순히 입력할 수 없습니다.kdiff3
순식간에cmd
세션을 수행하고 KDIf3를 실행합니다.
하드 솔루션: KDIf3의 전체 경로를 지정하여 Git에 KDIf3를 찾을 수 있는 위치를 알려주어야 합니다.kdiff3.exe
불행하게도 Git는 구성의 경로 사양에 공백이 있는 것을 좋아하지 않기 때문에 마지막으로 이것이 필요했을 때, 저는 그 오래된 "C:"를 갖게 되었습니다.\Progra~1...\kdiff3.exe" 1990년대 후반인 것처럼 :)
간단한 솔루션:컴퓨터 설정을 편집하고 %PATH%에 kdiff3.exe 디렉토리를 포함합니다.그런 다음 cmd.exe에서 이름으로 호출할 수 있는지 테스트한 다음 Git를 실행합니다.
명령줄 매개 변수를 추가해야 했습니다. 그렇지 않으면 KDIf3가 파일 없이 열리고 기본, 로컬 및 원격을 입력하라는 메시지가 나타납니다.저는 TorothyHg와 함께 제공된 버전을 사용했습니다.
또한 이전의 DOS 8.3 파일 이름을 사용해야 했습니다.
[merge]
tool = kdiff3
[mergetool "kdiff3"]
cmd = /c/Progra~1/TortoiseHg/lib/kdiff3.exe $BASE $LOCAL $REMOTE -o $MERGED
하지만 지금은 올바르게 작동합니다.
(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 이전 버전
Windows 10에 설치된 kdiff3를 WSL의 git에 대한 diff/merge 도구로 사용하는 단계:
- kdiff3 설치 디렉토리를 윈도우즈 경로에 추가합니다.
- WSLENV Windows 환경 변수(WSLENV=TMP/up)에 TMP를 추가합니다.TMP dir는 이전 버전의 파일과 같이 임시 파일에 대해 git에 의해 사용되므로 이 작업이 수행되려면 경로가 윈도우즈 파일 시스템에 있어야 합니다.
- .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
승인된 답변과 동일하지만 복사/붙여넣기가 용이한 새로운 설치 경로:
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
언급URL : https://stackoverflow.com/questions/33308482/how-can-i-configure-kdiff3-as-a-merge-tool-and-diff-tool-for-git
'programing' 카테고리의 다른 글
iOS - 코코아 포드에서 헤더 파일을 찾을 수 없는 빌드 실패 (0) | 2023.05.31 |
---|---|
URL에서 파일을 다운로드하여 레일즈에 저장하려면 어떻게 해야 합니까? (0) | 2023.05.31 |
루비 - 배열 테스트 (0) | 2023.05.31 |
Postgre에서 날짜로부터 연도와 월을 추출하는 방법to_char() 함수를 사용하지 않는 SQL? (0) | 2023.05.31 |
모듈 대신 사용자 양식에 코드를 입력하는 것에 단점이 있습니까? (0) | 2023.05.31 |