개발관련/Git

선호하는 diff 도구/뷰어를 사용하여 'git diff' 출력을 보는 방법

Rateye 2021. 9. 15. 10:33
728x90
반응형
질문 : 선호하는 diff 도구 / 뷰어로 'git diff'출력을 보려면 어떻게해야합니까?

git diff 입력하면 선택한 시각적 diff 도구 (Windows의 SourceGear "diffmerge")를 사용하여 출력을보고 싶습니다. 이를 위해 git을 어떻게 구성합니까?

답변

Git1.6.3부터 git difftool 스크립트를 사용할 수 있습니다. 아래 내 대답을 참조하십시오.

기사 가 도움이 될 수 있습니다. 다음은 가장 좋은 부분입니다.

외부 차이 도구를 지정하는 방법에는 두 가지가 있습니다.

첫 번째는 GIT_EXTERNAL_DIFF 변수를 설정하여 사용한 방법입니다. 그러나 변수는 실행 파일의 전체 경로를 가리켜 야합니다. 또한 GIT_EXTERNAL_DIFF로 지정된 실행 파일은 고정 된 7 개의 인수 집합으로 호출됩니다.

path old-file old-hex old-mode new-file new-hex new-mode

대부분의 diff 도구는 인수의 다른 순서 (일부만)를 필요로하기 때문에 대신 래퍼 스크립트를 지정해야 할 가능성이 높습니다. 그러면 실제 diff 도구를 호출합니다.

내가 선호하는 두 번째 방법은 "git config"를 통해 외부 diff 도구를 구성하는 것 입니다. 내가 한 일은 다음과 같습니다.

 

1) 다음과 같은 내용을 포함하는 래퍼 스크립트 "git-diff-wrapper.sh"를 만듭니다.

-->8-(snip)--
#!/bin/sh

# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode

"<path_to_diff_executable>" "$2" "$5" | cat
--8<-(snap)--

보시다시피 두 번째 ( "이전 파일") 및 다섯 번째 ( "새 파일") 인수 만 diff 도구에 전달됩니다.

 

2) 유형

$ git config --global diff.external <path_to_wrapper_script>

명령 프롬프트에서 "git-diff-wrapper.sh"경로로 바꾸면 ~ / .gitconfig에

-->8-(snip)--
[diff]
    external = <path_to_wrapper_script>
    --8<-(snap)--

래퍼 스크립트 및 diff 도구에 대한 경로를 지정하려면 올바른 구문을 사용해야합니다. 즉, 백 슬래시 대신 슬래시를 사용하십시오. 제 경우에는

[diff]
	external = \"c:/Documents and Settings/sschuber/git-diff-wrapper.sh\"

.gitconfig 및

"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

래퍼 스크립트에서. 후행 "고양이"를 조심하십시오!

( ' | cat '은 적절하거나 일관된 반환 상태를 반환하지 않을 수있는 일부 프로그램에만 필요하다고 가정합니다. diff 도구에 명시적인 반환 상태가있는 경우 후행 cat없이 시도 할 수 있습니다.)

( Diomidis Spinellis 는 의견에 추가합니다.

diff(1) 은 파일이 다른 경우 기본적으로 오류 코드와 함께 종료 cat 명령이 필요합니다.
Git은 외부 diff 프로그램이 실제 오류가 발생한 경우에만 오류 코드와 함께 종료 될 것으로 예상합니다 (예 : 메모리 부족).
git 의 출력을 cat 파이핑하면 0이 아닌 오류 코드가 마스킹됩니다.
더 효율적으로 프로그램은 0의 인수와 함께 exit


(위에 인용 된 기사)는 환경 변수가 아닌 구성 파일을 통해 정의 된 외부 도구에 대한 이론입니다.
실제로 (여전히 외부 도구의 구성 파일 정의를 위해) 다음을 참조 할 수 있습니다.

출처 : https://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-my-preferred-diff-tool-viewer
728x90
반응형