질문 : 선호하는 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
(위에 인용 된 기사)는 환경 변수가 아닌 구성 파일을 통해 정의 된 외부 도구에 대한 이론입니다.
실제로 (여전히 외부 도구의 구성 파일 정의를 위해) 다음을 참조 할 수 있습니다.
- msysgit / gitk로 DiffMerge를 어떻게 설정합니까? MsysGit 및 gitk에 대한 DiffMerge 및 WinMerge의 구체적인 설정을 보여줍니다.
- Windows에서 Git과 함께 작동하도록 편집기를 설정하려면 어떻게해야합니까? Notepad ++를 외부 편집기로 정의합니다.
출처 : https://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-my-preferred-diff-tool-viewer
'개발관련 > Git' 카테고리의 다른 글
git pull 실행 취소, 저장소를 이전 상태로 가져 오는 방법 (0) | 2021.09.16 |
---|---|
Git에서 복제 된 프로젝트에서 버전 추적을 제거하는 방법 (0) | 2021.09.15 |
Windows에서 Git 리포지토리의 디렉터리를 무시하는 방법 (0) | 2021.09.14 |
git pull --rebase의 사용시기 (0) | 2021.09.14 |
'git merge'와 'git rebase'의 차이점 (0) | 2021.09.14 |