.gitconfig를 사용하여 diff 도구 구성 명령 줄 diff를

.gitconfig 파일과의 차이점을 위해 다른 도구를 사용하도록 Git을 어떻게 구성합니까?

내 .gitconfig에 있습니다.

[diff]
    tool = git-chdiff #also tried /bin/git-chdiff

작동하지 않습니다; 그냥 일반 명령 줄 diff를 엽니 다. 내가 할 때

export GIT_EXTERNAL_DIFF=git-chdiff

그런 다음 git diff외부 diffing 도구를 엽니 다 (따라서 외부 diff 도구 스크립트가 올바르게 작동한다는 것을 알고 있습니다). diff 도구의 .gitconfig 구성에 문제가 있습니까?



답변

Git은 미리 정의 된 다양한 “디폴트”(kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, spread, opendiff, p4merge 및 araxis)를 제공하며, 자신을 지정합니다. 사전 구성된 difftools 중 하나 (예 : “vimdiff”)를 사용하려면 다음 행을 추가하십시오 ~/.gitconfig.

[diff]
    tool = vimdiff

이제 “git difftool”을 실행하고 원하는 도구를 사용할 수 있습니다.

반면에 자신의 difftool을 지정하면 조금 더 많은 작업이 필요합니다. 선호하는 diff 도구 / 뷰어로 ‘git diff’출력을 보려면 어떻게합니까?를 참조하십시오 .


답변

이를 수행하는 추가 방법 (명령 행에서) :

git config --global diff.tool tkdiff
git config --global merge.tool tkdiff
git config --global --add difftool.prompt false

처음 두 줄은 difftool과 mergetool을 설정하여 원하는 tkdiff대로 변경합니다. 세 번째 줄은 성가신 프롬프트를 비활성화하므로 때릴 때마다 git difftooldifftool이 자동으로 시작됩니다.


답변

다른 사람들은 이것에 대해 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"

다른 사람들이 언급하지 않은 1 %는 이것을 사용할 때 실행할 수 없습니다 git diff myfile.txt. 당신은 실행해야합니다 git difftool myfile.txt.


답변

다음은 diff 및 병합 도구를 구성하는 ~ / .gitconfig 부분입니다. 나는 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”명령이 있습니다. 그렇지 않으면 실행 파일의 전체 경로를 제공해야합니다.


답변

스레드 에서 내 대답을 재현 하여 Git의 diff 도구로 비교할 수없는 설정에 더 구체적이었습니다. 내가 공유 한 모든 세부 사항은 일반적으로 모든 diff 도구에 똑같이 유용하므로 여기에서 공유하십시오.

우리가 실행하는 첫 번째 명령은 다음과 같습니다.

git config --global diff.tool bc3

위의 명령에서 항목 아래에 생성 .gitconfig에서 발견 된 %userprofile%디렉토리

[diff]
    tool = bc3

그런 다음 아래 명령을 실행하십시오 ( 이 특별한 경우에는이 명령을 실행하는 것이 불필요하며 일부 특수한 경우에만 필요합니다. 잠시 후에 알게 될 것입니다 ).

git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"

위의 명령은 .gitconfig파일 에서 아래 항목을 만듭니다 .

[difftool "bc3"]
    path = c:/program files/Beyond Compare 3/bcomp.exe

여기서 알아야 할 것은 열쇠 bc3입니다. 이것은 시중에서 구할 수있는 특정 버전의 잘 알려진 비교 도구에 해당하는 잘 알려진 git 키 bc3입니다 (Beyond Compare 도구의 세 번째 버전에 해당). 미리 정의 된 모든 키를 보려면 git difftool --tool-helpgit bash 에서 명령을 실행하십시오 . 아래 목록을 반환합니다.

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 ?

필자의 경우와 마찬가지로 비교 4 이상을 설치했습니다. 넘어 비교는 잘 알려진 도구이지만 git 4 버전은 기본적으로 기존 키에 매핑되지 않습니다. 따라서 아래 방법 중 하나를 수행 할 수 있습니다.

  1. 비교 4 도구 bc3를 넘어 비교 3 버전을 초과하는 기존 키에 매핑 할 수 있습니다 . 내 컴퓨터에서 버전 3을 비교할 수 없었으므로 신경 쓰지 않았습니다. 원하는 경우 위 목록의 사전 정의 된 키에도 매핑 할 수있었습니다 (예 🙂 examdiff.

    잘 알려진 버전의 도구를 이미 기존 / 잘 알려진 키에 매핑하면 설치 경로가 이미 git이므로 두 번째 명령을 실행할 필요가 없습니다 .

    예를 들어 상자에 비교 버전 3 이상을 설치 한 경우 .gitconfig파일에 아래 구성 이 있으면 충분합니다.

    [diff]
    tool = bc3
    

    그러나 기본 관련 도구를 변경하려면 pathgit이 새 도구의 exe를 시작 해야하는 경로를 알 수 있도록 속성을 별도로 언급 하게됩니다. 다음은 비교 4 이상으로 시작하는 여우 자식 항목입니다. exe의 경로를 참고하십시오.

    [difftool "bc3"]
    path = c:/program files/Beyond Compare 4/bcomp.exe
    
  2. 가장 깨끗한 방법 은 새로운 비교 도구 또는 잘 알려진 도구의 새 버전에 대한 새 키를 모두 정의하는 것입니다. 필자의 경우처럼 bc4기억하기 쉽도록 새 키를 정의했습니다 . 이 경우 두 명령을 모두 실행해야하며 두 번째 명령은 새 도구 실행 파일의 경로를 설정하지 않습니다. 대신 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를 따르는 것이 좋습니다.


답변

아래 블록 중 하나를 추가하면 KDiff3 을 사용할 수 있습니다. Windows 및 Linux 개발 환경에 있습니다. 일관된 크로스 플랫폼 차이 및 병합 도구를 만듭니다.

리눅스

[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

이 글은 Git 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.