git diff-줄 끝 변경 표시?


85

내 편집기가 내 소스 파일의 줄 끝을 변경하고 있습니다. 내가 할 때 git diff, 나는 눈에 띄는 차이없이 같은 줄을 두 번-한 번은 한 번 -, 한 번은 +-봅니다.

git diff이 변경 사항이 실제로 무엇인지 어떻게 보여줄 수 있습니까?


의 근처 중복 (또한 아래에 언급) : 내가 좋아하는이git config diff.wsErrorHighlight all
여호수아 골드버그

답변:


64

먼저 컬러 출력 (예 git diff --color:)을 사용하고 있고 공백 강조 표시를 활성화 했는지 확인하십시오 (예 :

git config color.diff.whitespace "red reverse"

그러나 제거 된 줄의 git후행 공백을 강조 표시하지 않기 때문에 모든 경우에 작동 하지 않을 수 있습니다. 삭제 한 공백을 보려면 다음을 사용하십시오.

git diff -R

비교의 '추가 된'쪽에 공백을 넣으면 강조 표시됩니다.

자세한 내용은 이 SO 질문 의 답변을 참조하십시오 .


나는 git 버전 2.1.4를 가지고 있으며 git config 명령 제안에 따라 행동했습니다. 그러나 git diff는 여전히 차이를 보이지 않습니다. git diff를 hexdump -C로 파이프하면 아무것도 표시되지 않습니다 000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|. 7d는 '}'중괄호입니다.
카디프 우주인

37

다음 명령으로 줄 끝 차이를 확인할 수 있습니다.

git diff | cat -v

그런 다음 CRLF (DOS) 종료에는 "^ M"이 인쇄되고 LF (Unix) 종료에는 아무것도 인쇄되지 않습니다.

분명히 git diff는 CRLF 종료를 위해 CR 및 LF 문자를 인쇄하여 올바른 일을하고 있습니다. 그러나 CR은 콘솔에서 사용되기 때문에 볼 수 없습니다. cat -v를 사용하여 표시 할 수 있습니다.


또 다른 유사한 접근 방식은 git diff > somediff && vi somediffvim이 CRLF를 ^ M으로 표시하는 것입니다. 하지만 cat -v깔끔합니다.
Nick X

1
+1은 내가 20 년 동안 사용하고 나서 cat내가 알지 못했던 옵션을 배울 수있게 해준다 . :-)
Harald

24

공백 변경을 확인하는 한 가지 방법은 다음을 사용하여 문자 별 "단어 차이"를 수행하는 것입니다.

git diff --color --word-diff-regex=.

이것은 줄의 모든 공백 변경을 강조합니다 . 제거 된 공백은에 싸여 [--]과에 공백을 추가 {+하고 +}.

또는 Alex가 제안한 대로

git diff --color --ws-error-highlight=new,old

줄 끝의 모든 공백 변경 사항을 강조 표시합니다 .


11
git diff --ws-error-highlight=new,old

변경된 줄에서 공백 차이를 강조 표시합니다.


어떤 버전의 git을 사용하고 있습니까? 내 시스템의 git 2.1.4에 --ws-error-highlight = new, old는 잘못된 옵션입니다.
카디프 우주인

이 옵션은 2015 년 git 2.5.0에서 추가되었습니다.
MiniGod

5

그래픽 비교 도구가 변경 사항을 더 잘 보여줄 것 git difftool입니다. 시도해보십시오 .

meld를 사용 하고 공백을 표시하도록 환경 설정을 지정하십시오. (편집-> 환경 설정-> 공백 표시.)

다른 그래픽 도구에는 비슷한 옵션이있을 수 있습니다.


그래픽 비교 도구를 사용하지 못할 수 있습니다. @ paul-whittaker의 답변은 질문 (일부 터미널)이 암시하는 컨텍스트에서 작동합니다.
beOn

이제 이것은 이상하지만 git difftool --tool=meld doesn't심지어 meld를 시작하십시오. 리베이스가 진행 중인지 아닌지 모르겠습니다.
카디프 우주인
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.