본문 바로가기
IT

git diff 보는 법 정리 - difftool

by developer's warehouse 2024. 2. 29.

git difftool은 Git 명령어로, 일반적인 diff 도구를 사용하여 리비전 간의 파일을 비교하고 편집할 수 있게 해 줍니다. git difftool은 git diff의 프런트엔드로 개발자가 diff를 편하게 볼 수 있는 방법을 제공합니다.

git diff 보는 법 정리 - difftool 썸네일

git difftool 설정하기

git difftool 명령을 사용하려면 먼저 diff.tool을 설정해야 합니다. 이 설정은 git difftool이 사용할 diff 도구를 지정합니다.
difftool을 설정하려면 사용가능한 diff tool 목록을 봐야합니다.
git difftool --tool-help 명령을 사용하면 사용 가능한 diff tool 목록을 볼 수 있습니다. 이 명령은 현재 시스템에서 사용 가능한 diff 도구와 그에 대한 간략한 설명을 제공합니다.

% git difftool --tool-help
'git difftool --tool=<tool>' may be set to one of the following:
                meld
                tkdiff
                vimdiff
                vimdiff1
                vimdiff2
                vimdiff3

The following tools are valid, but not currently available:
                araxis
                bc
                bc3
                bc4
                codecompare
                deltawalker
                diffmerge
                diffuse
                ecmerge
                emerge
                examdiff
                guiffy
                gvimdiff
                gvimdiff1
                gvimdiff2
                gvimdiff3
                kdiff3
                kompare
                nvimdiff
                nvimdiff1
                nvimdiff2
                nvimdiff3
                opendiff
                p4merge
                smerge
                winmerge
                xxdiff

Some of the tools listed above only work in a windowed
environment. If run in a terminal-only session, they will fail.

 

위에서 설정가능한 diff tool은 meld, tkdiff, vimdiff 입니다.

 

diff.tool을 설정하는 방법은 다음과 같습니다

% git config --global diff.tool <tool>


여기서 <tool>은 사용하려는 diff 도구의 이름입니다. 예를 들어, tkdiff를 사용하려면 다음과 같이 입력합니다:

% git config --global diff.tool tkdiff


이제 git difftool 명령을 실행하면 tkdiff가 사용됩니다.

git difftool 명령 사용법

git difftool 명령의 사용법은 다음과 같습니다.

% git difftool [<options>] [<commit> [<commit>]] [--] [<path>…]


이 명령은 두 개의 커밋 사이의 변경 사항을 비교하거나, 특정 경로의 파일 변경 사항을 비교하는 데 사용됩니다.

 

git difftool의 주요 옵션과 사용예

기본 명령

git difftool 명령을 수행하면 현재 디렉토리 하위의 수정파일과 REMOTE의 차이를 보여줍니다.

아래는 meld로 diff tool을 설정한 후 git difftool을 수행했을 때를 보여줍니다. 이때 변경 파일 하나하나씩 launch 할 것인지 물어봅니다.

difftool 기본 명령

 

"Y"를 누르면 diff가 아래와 같이 보여집니다.

meld로 git diff가 보여진 화면

디렉터리 diff

- -d, --dir-diff

 

수정된 파일을 임시 위치로 복사하고 디렉터리 diff를 수행합니다. 이 모드는 diff 도구를 시작하기 전에 프롬프트를 표시하지 않습니다.

git difftool -d 명령
git difftool -d 명령 결과 화면

프롬프트 관련

-y, --no-prompt

 

diff 도구를 시작하기 전에 프롬프트를 표시하지 않습니다.

git difftool -y 명령

 

- --prompt

 

diff 도구를 호출할 때마다 프롬프트를 표시합니다. 이것이 기본 동작이며, 이 옵션은 구성 설정을 무시하기 위해 제공됩니다.

git difftool --prompt 명령

diff 도구 지정

-t <tool>, --tool=<tool>

<tool>로 지정된 diff 도구를 사용합니다. 유효한 값에는 emerge, kompare, meld, vimdiff 등이 포함됩니다.

현재 시스템에서 유효한 <tool> 설정 목록을 보려면 git difftool --tool-help를 실행합니다.

git difftool -t 명령

사용자 지정 명령

- -x <command>, --extcmd=<command>

 

diff를 보는 데 사용할 사용자 정의 명령을 지정합니다. 이 옵션을 지정하면 git-difftool은 구성된 기본값을 무시하고 <command> $LOCAL $REMOTE를 실행합니다.

하지만, 개인적으로 이 명령은 실행할 일은 없는 것 같습니다.

 

오늘은 git에서 diff를 보기 위해 사용하는 difftool에 대해서 사용법과 사용 예를 확인해 보았습니다. difftool이 잘 되어있어서 diff는 매우 쉽게 볼 수 있는 것 같습니다.

물론 vscode를 통하면 이 기능을 직접 사용할 필요는 없지만 vscode보다 더 눈에 잘 들어오는 diff 툴과 도구들이 있으니 그런 도구들을 사용해 보는 것도 좋은 것 같습니다.

 

참고 자료

https://git-scm.com/docs/git-difftool

facebook twitter kakaoTalk kakaostory naver band shareLink