“git diff”를 입력하면 “diff -y”와 같이 나란히 diff를 보거나 “kdiff3″과 같은 대화식 diff 도구에 diff를 표시하고 싶습니다. 어떻게 할 수 있습니까?
답변
Git에는 diff의 내부 구현이 있지만 대신 외부 도구를 설정할 수 있습니다.
외부 diff 도구를 지정하는 방법에는 두 가지가 있습니다.
GIT_EXTERNAL_DIFF
및GIT_DIFF_OPTS
환경 변수 설정 .- 통해 외부 diff 도구 구성
git config
또한보십시오:
- https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration
git diff --help
- http://www.pixelbeat.org/programming/diffs/
를 수행 할 때 git diff
Git은 위의 환경 변수 설정과 .gitconfig
파일을 모두 확인 합니다.
기본적으로 Git은 다음 7 가지 인수를 diff 프로그램에 전달합니다.
path old-file old-hex old-mode new-file new-hex new-mode
일반적으로 이전 파일 및 새 파일 매개 변수 만 필요합니다. 물론 대부분의 diff 도구는 두 개의 파일 이름 만 인수로 사용합니다. 즉, Git이 스크립트에 제공하는 인수를 가져 와서 선택한 외부 git 프로그램에 전달하는 작은 래퍼 스크립트를 작성해야합니다.
래퍼 스크립트를 아래에 넣었다고 가정 해 봅시다 ~/scripts/my_diff.sh
.
#!/bin/bash
# un-comment one diff tool you'd like to use
# side-by-side diff with custom options:
# /usr/bin/sdiff -w200 -l "$2" "$5"
# using kdiff3 as the side-by-side diff:
# /usr/bin/kdiff3 "$2" "$5"
# using Meld
/usr/bin/meld "$2" "$5"
# using VIM
# /usr/bin/vim -d "$2" "$5"
그런 다음 해당 스크립트를 실행 가능하게 만들어야합니다.
chmod a+x ~/scripts/my_diff.sh
그런 다음 Git에 사용자 정의 diff 래퍼 스크립트를 찾는 방법과 위치를 알려줘야합니다. 이를 수행하는 방법에는 세 가지가 있습니다. (.gitconfig 파일 편집을 선호합니다)
-
사용하여
GIT_EXTERNAL_DIFF
,GIT_DIFF_OPTS
예를 들어 .bashrc 또는 .bash_profile 파일에서 다음을 설정할 수 있습니다.
GIT_EXTERNAL_DIFF=$HOME/scripts/my_diff.sh export GIT_EXTERNAL_DIFF
-
사용
git config
래퍼 스크립트를 찾을 수있는 위치를 정의하려면 “git config”를 사용하십시오.
git config --global diff.external ~/scripts/my_diff.sh
-
~/.gitconfig
파일 편집~/.gitconfig
파일을 편집하여 다음 줄을 추가 할 수 있습니다 .[diff] external = ~/scripts/my_diff.sh
노트 :
사용자 지정 diff 도구를 설치하는 것과 마찬가지로 사용자 지정 병합 도구를 설치할 수도 있습니다.이 병합 도구는 병합을보다 잘 시각화하기위한 시각적 병합 도구 일 수 있습니다. (progit.org 페이지 참조)
참조 : http://fredpalma.com/518/visual-diff-and-merge-tool/ 및 https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration
답변
git difftool을 사용해보십시오
git difftool
대신에 사용하십시오 git diff
. 당신은 다시 가지 않을 것입니다.
사용 예를 추가하려면 업데이트하십시오.
여기에 대해 이야기가 또 다른 유래에 대한 링크입니다 git difftool
: 어떻게 내 기본 설정은 diff 도구 / 뷰어 ‘자식은 diff’출력을 보려면 어떻게해야합니까는?
의 새 버전 git
의 difftool
명령은 아웃 – 오브 – 박스 많은 외부은 diff 도구를 지원합니다. 예를 들어 vimdiff
자동 지원되며 다음을 통해 명령 줄에서 열 수 있습니다.
cd /path/to/git/repo
git difftool --tool=vimdiff
지원되는 다른 외부 diff 도구는 다음 git difftool --tool-help
예제 출력을 통해 나열됩니다 .
'git difftool --tool=<tool>' may be set to one of the following:
araxis
kompare
vimdiff
vimdiff2
The following tools are valid, but not currently available:
bc3
codecompare
deltawalker
diffuse
ecmerge
emerge
gvimdiff
gvimdiff2
kdiff3
meld
opendiff
tkdiff
xxdiff
답변
시도해 볼 수도 있습니다 git diff --word-diff
. 정확히 나란히는 아니지만 어쨌든 더 좋으므로 실제 나란히 필요한 것보다 선호 할 수 있습니다.
답변
ydiff
이전에 호출 된 cdiff
이 도구는 나란히 , 증분 및 색상이 다른 diff를 표시 할 수 있습니다 .
을 수행하는 대신 다음을 수행하십시오 git diff
.
ydiff -s -w0
ydiff
차이가있는 각 파일에 대해 나란히 표시 모드로 시작 됩니다.
다음을 사용하여 설치 :
python3 -m pip install --user ydiff
-또는-
brew install ydiff
의 경우 git log
다음을 사용할 수 있습니다.
ydiff -ls -w0
-w0
터미널 너비를 자동 감지합니다. 자세한 내용과 데모 는 ydiff
GitHub 리포지토리 페이지 를 참조하십시오 .
Git 2.18.0, ydiff 1.1에서 테스트되었습니다.
답변
다음과 같이 나란히 diff
사용할 sdiff
수 있습니다.
$ git difftool -y -x sdiff HEAD^ | less
어디에서 다른 HEAD^
것으로 바꾸어야하는 예가 있습니까?
나는이 솔루션을 발견 여기에 다른 몇 가지 제안도있는 곳. 그러나이 답변은 OP의 질문을 간결하고 명확하게 대답합니다.
인수에 대한 설명은 man git-difftool 을 참조하십시오 .
게시판에 주석을 달면 git sdiff
다음 실행 스크립트를 작성하여 편리한 명령을 만들 수 있습니다 .
#!/bin/sh
git difftool -y -x "sdiff -w $(tput cols)" "${@}" | less
로 저장 /usr/bin/git-sdiff
하고 chmod -x
그것. 그런 다음이 작업을 수행 할 수 있습니다 :
$ git sdiff HEAD^
답변
export GIT_EXTERNAL_DIFF='meld $2 $5; echo >/dev/null'
그런 다음 간단히 :
git diff
답변
당신은 GitHub의를 포함하지 않고 브라우저에서 나란히 차이점을보고 싶은 경우에, 당신은 즐길 수있는 자식 webdiff을 , 드롭 인 교체 git diff
:
$ pip install webdiff
$ git webdiff
이것은 다음과 같은 전통적인 GUI difftools에 비해 많은 장점을 제공합니다 tkdiff
구문 강조를 제공하고 이미지 차이를 표시 할 수 있다는 점에서 제공합니다.