.gitconfig를 사용하여 diff 도구 구성
.gitconfig 파일을 디핑하기 위해 다른 도구를 사용하도록 Git을 구성하려면 어떻게 해야 합니까?
.gitconfig에 다음이 있습니다.
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
일반 명령행 diff를 열기만 하면 작동하지 않습니다.내가 할 때
export GIT_EXTERNAL_DIFF=git-chdiff
그리고나서git diff
외부 디프 툴이 열립니다(외부 디프 툴 스크립트가 잘 작동합니다).tool?diff의 ?
이를 위한 추가 방법(명령줄):
git config --global diff.tool tkdiff
git config --global merge.tool tkdiff
git config --global --add difftool.prompt false
두을 음처두줄은과툴병합툴을다음다같설이정니합과▁to▁the다▁the▁set니▁willget설정합같▁and▁mer▁first▁linesft▁dif이처음▁two과oolool과음으로 설정합니다.tkdiff
원하는 대로 변경합니다.세 번째 줄은 성가신 프롬프트를 비활성화하기 때문에 당신이 누를 때마다git difftool
자동으로 diff 도구를 시작합니다.
Git는 사전 구성된 다양한 diff 도구(kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, emmerge, diff, opendiff, p4merge 및 araxis)를 제공하며 사용자가 직접 지정할 수도 있습니다. 도구 " 중 하려면 다음 을 사용자의 "vimdiff"("vimdiff")에 합니다.~/.gitconfig
:
[diff]
tool = vimdiff
이제 "git diff tool"을 실행하고 원하는 도구를 사용할 수 있습니다.
반면에 사용자만의 diff 도구를 지정하려면 작업이 조금 더 필요합니다. 선호하는 diff 도구/뷰어로 'gitdiff' 출력을 보려면 어떻게 해야 합니까?를 참조하십시오.
다른 사람들은 이것에 대해 99%의 대답을 했지만 한 단계가 빠졌습니다.(제 대답은 OS X에서 나오므로 파일 경로를 적절히 변경해야 합니다.)
은 당신의 이한변사사가용자에 이러한 을 가합니다.~/.gitconfig
:
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = /Applications/Diffmerge.app/Contents/MacOS/diffmerge $LOCAL $REMOTE
이렇게 하면 diff 도구가 수정됩니다.또한 편집하지 않고 이 문제를 해결할 수 있습니다.~/.gitconfig
터미널에서 다음 명령을 직접 입력합니다.
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd "/Applications/DiffMerge.appContents/MacOS/diffmerge \$LOCAL \$REMOTE"
다할 때 실행할 수 입니다.git diff myfile.txt
당신은 뛰어야 합니다.
Beyond Compare를 Git의 diff tool로 설정하는 것에 더 구체적인 이 질문에서 내 대답을 재현합니다.제가 공유한 모든 세부 정보는 일반적으로 어떤 diff tool에도 똑같이 유용하기 때문에 여기에 공유합니다.
첫 번째로 실행되는 명령은 다음과 같습니다.
git config --global diff.tool bc3
위 명령은 %userprofile% 디렉토리에 있는 .gitconfig 파일에 아래 항목을 만듭니다.
[diff]
tool = bc3
%userprofile%는 실행 프롬프트에 입력하고 를 눌러 .gitconfig 파일이 있는 디렉토리 위치를 열 수 있는 환경 변수입니다.
바로 그겁니다.이것은 이미 Git에게 알려진 잘 알려진 비교 도구의 이미 게시된 버전을 설정할 때 필요한 모든 것입니다. 이 경우 Beyond Compare의 세 번째 버전은 Git에게 알려져 있습니다.
이제 딥 다이빙을 해요!
또한 다음 명령을 실행해야 할 수도 있습니다.
git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"
이 명령을 실행하는 것은 선택 사항입니다.일부 특수한 경우에만 필요합니다.우리는 잠시 후에 그것의 이유를 알게 될 것입니다.
여기서 알아야 할 가장 중요한 것은 키 bc3입니다.이 키는 시장에서 사용 가능한 특정 비교 도구의 특정 버전에 매핑되는 Git에 대한 잘 알려진 키입니다. 예를 들어, 이 경우 bc3은 Beyond Compare 도구의 3번째 버전에 해당합니다.Git에 의해 유지 관리되는 키의 전체 목록을 보려면 Git Bash 명령줄에서 아래 명령을 실행합니다.
git difftool --tool-help
위 명령을 실행하면 아래 목록이 반환됩니다.
vimdiff
vimdiff2
vimdiff3
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
Git에 대한 비교 도구를 설정하는 동안 사용 중인 도구와 해당 버전을 기반으로 위의 기존 키를 사용할 수 있습니다. 예를 들어 Beyond Compare v1의 경우에는 키 bc를 사용하고 Beyond Compare v3의 경우에는 키 bc3를 사용합니다.
그러나 경우에 따라 새로운 키를 정의해야 할 수도 있습니다. 예를 들어, 시장에 출시된 지 얼마 되지 않은 새로운 비교 도구를 설정하고 있다고 가정해 보겠습니다.분명한 이유로 인해 컴퓨터에 설치된 Git의 현재 버전에는 이 새 도구에 해당하는 키가 표시되지 않습니다.결국 Git는 미래의 릴리스에서 이를 보여줄 것이지만 즉시는 아닙니다.마찬가지로 이 문제는 기존 도구의 새로 릴리스된 버전에서도 발생할 수 있습니다. 예를 들어 위 목록에 Beyond Compare v4 키가 없습니다.따라서 모든 도구를 기존 키 또는 자신의 새 사용자 지정 키에 언제든지 자유롭게 매핑할 수 있습니다.
이제 다음과 같은 비교 도구를 설정할 때의 시나리오를 이해하겠습니다.
- Git의 사전 정의된 키에 매핑되지 않은 오래된 도구의 새 버전이 출시되었습니까?
OR
- 완전히 새로운 시장
저의 경우와 마찬가지로 Beyond Compare v4를 설치했습니다.Beyond Compare 도구는 Git에 이미 알려져 있지만 버전 4 릴리스가 기존 키에 매핑되지 않았습니다.따라서 다음과 같은 방법을 사용할 수 있습니다.
Git for Beyond Compare v4에는 키가 없기 때문에 Beyond Compare v3에 매핑되어야 하지만 이미 존재하는 키 bc3에 매핑할 수 있습니다.우리는 노력을 절약하기 위해 Git를 능가할 수 있습니다.
이제 첫 번째 단락에서 답하지 않은 질문에 대한 답이 있습니다. Git에 이미 알려진 키에 도구를 매핑하는 경우 두 번째 명령을 실행할 필요가 없습니다.이는 도구의 EXE 위치가 Git에 이미 알려져 있기 때문입니다.
그러나 이 기능은 여러 버전에서 도구의 EXE 위치가 변경되지 않을 때만 작동합니다.Beyond Compare v3와 v4가 %programfiles% 디렉토리의 설치 위치가 서로 다른 경우에는 두 번째 명령을 실행해야 합니다.
예를 들어, Beyond Compare v3를 내 상자에 설치했다면 내 .gitconfig 파일에 아래의 구성이 있으면 설정 프로세스를 완료하기에 충분했을 것입니다.이는 v3 및 v4의 설치 경로가 동일하다는 가정을 기반으로 합니다.
[diff] tool = bc3
그러나 기본값이 아닌 도구를 연결하려면 경로 속성을 별도로 언급하여 Git가 시작해야 하는 위치에서 EXE의 경로를 알 수 있도록 해야 합니다.아래 항목은 Git에게 대신 Beyond Compare v4를 실행하라고 말합니다.EXE 경로를 기록합니다.
[difftool "bc3"] path = c:/program files/Beyond Compare 4/bcomp.exe
또한 필요하다면 Beyond Compare v4를 다른 툴의 사전 정의된 키(예: examdiff)에 매핑할 수도 있습니다.Git이 당신이 이 나쁜 짓을 하는 것을 막지는 못할 것입니다.유지관리에 대한 악몽을 피해서는 안 됩니다.
가장 깨끗한 방법은 사용자 지정 키를 정의하는 것입니다.새 비교 도구 또는 새 버전의 기존 도구에 대한 새 키를 정의할 수 있습니다.저의 경우와 마찬가지로 저는 새로운 키 bc4를 상당히 직관적이기 때문에 정의했습니다.저는 그것을 푸바라고 이름 지을 수 있었습니다.
키가 완전히 새로운 경우 설정 프로세스가 약간 다릅니다.이 경우 모두 두 개의 명령을 실행해야 합니다.그러나 두 번째 명령은 새 도구의 EXE 경로를 설정하는 것이 아닙니다.대신 아래와 같이 새 툴에 cmd 속성을 설정해야 합니다.
git config --global diff.tool bc4 git config --global difftool.bc4.cmd "\"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"\$LOCAL\" -d \"\$REMOTE\""
위의 명령을 실행하면 .gitconfig 파일에 다음 항목이 생성됩니다.
[diff] tool = bc4 [difftool "bc4"] cmd = \"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"$LOCAL\" -d \"$REMOTE\"
향후 유지보수 문제가 발생하지 않도록 #2 접근 방식을 따를 것을 강력히 권장합니다.
다음은 ~/.gitconfig에서 diff 및 merge 도구를 구성하는 부분입니다.저는 SourceGear의 diffmerge를 좋아합니다. (사실 저는 그것을 매우 좋아합니다.
[merge]
tool = diffmerge
[mergetool "diffmerge"]
cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
trustExitCode = false
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
보시다시피, 당신은 "diffmerge"라는 이름의 도구를 정의하고 있습니다.[difftool "diffmerge"]
라인. 그러면 "diffmerge" 도구를 기본값으로 설정합니다.[diff] tool =
부분.
제가 가는 길에 분명히 "diffmerge" 명령이 있습니다.그렇지 않으면 실행 파일에 대한 전체 경로를 지정해야 합니다.
아래 블록 중 하나를 추가하면 Windows 및 Linux 개발 환경에서 KDIf3를 사용할 수 있습니다.이것은 일관된 교차 플랫폼 diff and merge 도구를 만듭니다.
리눅스
[difftool "kdiff3"]
path = /usr/bin/kdiff3
trustExitCode = false
[difftool]
prompt = false
[diff]
tool = kdiff3
[mergetool "kdiff3"]
path = /usr/bin/kdiff3
trustExitCode = false
[mergetool]
keepBackup = false
[merge]
tool = kdiff3
창문들
[difftool "kdiff3"]
path = C:/Progra~1/KDiff3/kdiff3.exe
trustExitCode = false
[difftool]
prompt = false
[diff]
tool = kdiff3
[mergetool "kdiff3"]
path = C:/Progra~1/KDiff3/kdiff3.exe
trustExitCode = false
[mergetool]
keepBackup = false
[merge]
tool = kdiff3
여러 diff 도구를 사용하는 옵션을 사용하려면 .gitconfig 파일에 별칭을 추가합니다.
[alias]
kdiff = difftool --tool kdiff3
Microsoft VS 코드 팁 및 요령을 참조하십시오.터미널에서 다음 명령을 실행하면 됩니다.
git config --global merge.tool code
하지만 먼저 당신은 추가해야 합니다.code
명령을 사용할 수 있습니다.
Windows에서는 다음을 실행해야 합니다.git difftool --tool-help
명령을 사용하여 다음과 같은 다양한 옵션을 확인할 수 있습니다.
'git difftool --tool=<tool>' may be set to one of the following:
vimdiff
vimdiff2
vimdiff3
The following tools are valid, but not currently available:
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
Some of the tools listed above only work in a windowed
environment. If run in a terminal-only session, they will fail.
그리고 다음과 같이 임의의 항목(예: WinMerge)을 추가할 수 있습니다.
git difftool --tool=winmerge
커밋하기 전에 파일을 볼 수 있도록 메모장++을 구성하는 경우:
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
그리고 사용하기git commit
메모장++에서 커밋 정보를 엽니다.
이전 답변의 거의 모든 솔루션이 Git 버전 2에서 작동하지 않습니다.
내 것: Git 버전 = 2.28.0
diff 툴 솔루션: git config --global diff.tool vimdiff
그 후에는 문제없이 사용하실 수 있습니다.
사용하다git config --global diff.external git-chdiff
대신에git config --global diff.tool git-chdiff
.
언급URL : https://stackoverflow.com/questions/6412516/configuring-diff-tool-with-gitconfig
'programing' 카테고리의 다른 글
수동으로 범례를 작성하는 방법 (0) | 2023.07.19 |
---|---|
node.js 및 mongodb에서 등록 및 로그인 양식 만들기 (0) | 2023.07.19 |
C에서 "계속하려면 아무 키나 누르기" 기능 (0) | 2023.07.19 |
셀러리의 대기열에 있는 작업 목록 검색 (0) | 2023.07.19 |
iOS 10.0 런타임 충돌에서 NSCameraUsageDescription? (0) | 2023.07.19 |