git diff가 색상을 잘못 표시합니다


46

모든 git 명령에서 컬러 출력을 얻으려면 다음을 설정하십시오.

git config --global color.ui true

그러나 이것은 다음과 같은 출력을 생성합니다 git diff.git log

git diff 스크린 샷

반면에 같은 명령은 git status잘 표시됩니다

자식 상태 스크린 샷

일부 명령에서만 이스케이프 된 색상 코드를 인식하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

xterm-256colorOS X 10.8.2 및 ish에서 iTerm 2 (터미널 유형 )를 쉘로 사용하고 있습니다.

zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)

git --version                                                                                                                      
git version 1.7.9.6 (Apple Git-31.1)

답변:


65

이스케이프 문자가 표시된 것처럼 색상을 변경하도록 터미널에 지시하는 이스케이프 시퀀스가 ​​표시되는 ESC반면 원하는 동작은 이스케이프 시퀀스가 ​​의도 한 효과를 갖는 것입니다.

같은 명령 git diffgit log에 파이프를 자신의 출력 호출기 , less기본적으로합니다. Git less은 제어 문자가 제어 효과를 갖도록 허용 하려고 시도 하지만 작동하지 않습니다.

경우 less호출기하지만 당신이 환경 변수가 LESS포함되지 않는 값으로 설정 -r또는 -R, 자식 알 수없는 less디스플레이 색상. 환경에 이미 설정되어 LESS=-FRSX있으면 정상적으로 전달 LESS됩니다. 수정은 git에 의해 호출 될 때 색상을 표시 하도록 -R옵션 을 명시 적으로 전달하는 것입니다 less.

git config --global core.pager 'less -R'

less호출기가 아닌 경우 less호출기로 표시 색상을 만드는 방법으로 전환 하거나 확인하십시오.

호출기를 호출 할 때 git이 색상을 표시하지 않게 color.ui하려면 auto대신로 설정하십시오 true.


아 고마워 나는 그것이 알고 있지만 less필요한 -R디스플레이 색상에, 나는 그것을 잊어 git loggit diff출력을 파이프 less. 감사합니다 :)

5
감사합니다! 나는 기본 것으로 나타났습니다하지 않았다 ~/.profileFreeBSD의에서이 있었다PAGER=more; export PAGER
제프리 골드버그를

감사. 나는 모든 것을 할 수 있기 때문에 LESS설정했습니다 . 나는 그것이 그 변수에 펑키하다고 생각했고, 이제는 그것을 고치는 방법을 알고 있습니다. -KCTRL-C
trysis

2

Gilles의 답변을 향상 $LESS시키면 git config (예 :)에서 이것을 사용 하여 이전 옵션을 유지할 수 있습니다 ~/.gitconfig.

[core]
pager = less -+$LESS -FRX

quazgar의 답변이 좋습니다. 나는 LESS=-ibashrc에있다. 그래서`[core] pager = less $ LESS -FR`을해야 할 것이다. X로 기존의 터미널 컨텐츠가 지워지기 때문에 X를 꺼내었다. 나는 터미널 컨텐츠를 유지하는 것을 선호한다.
웨인 워커

1

Busybox 가있는 경우이 출력을 볼 수도 있습니다 . Alpine Linux 는 널리 사용되는 배포판의 좋은 예입니다. https://wiki.alpinelinux.org/wiki/Alpine_Linux:FAQ#How_to_enable.2Ffix_colors_for_git.3F를 참조 하십시오.

현재 Busybox를 사용하고 있는지 확인하는 간단한 방법은 다음을 실행하는 것입니다.

realpath `which less`

또는 생선 껍질 을 사용하는 경우

realpath (which less)

출력이 이면 gnu less/bin/busybox 를 설치하여 문제를 해결할 수 있습니다 .

알파인에서 :

sudo apk --update add less

배포판 / 패키지 관리자에 따라 명령이 다릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.