시계를 사용할 때 git 색상이 나타나지 않는 이유는 무엇입니까?


10

실행할 때 git status -sb나는 본다 :

여기에 이미지 설명을 입력하십시오

watch(procps-ng 3.3.3에서) 저장소를 원합니다 . --color옵션은 색상을 유지하기로한다.


흥미롭게도 다음과 함께 작동합니다 ls.

$ watch --color "ls --color"

전시:

ls에서 출력


그러나 git색상이 사라지는 경우 :

$ watch --color "git status -sb"

여기에 이미지 설명을 입력하십시오


그렇다면 왜 출력 에서 watch색상을 표시 하지 않습니까?lsgit



@Jobin, 감사는 사실 :)이 질문을 게시하기 전에 해당 링크에 주석
드류 녹스에게

답변:


5

다음 진술은 사실입니다.

  • watch새 쉘에서 명령을 실행합니다 sh.
  • .bashrc별칭 ls으로는 ls --color=auto색상을 활성화합니다.
  • shbash별칭을 상속 받거나 사용하지 않습니다 .

따라서를 watch실행 ls하면 색상을 요구하지 않고 일반 이전 버전 만 실행합니다. 이것을 피할 수는 있지만, aditya가 지적한 것처럼 색상을 watch올바르게 처리하려면 색상을 활성화해야합니다 .

작업 예 ls는 다음과 같습니다.

watch --color -- ls --color=always

--color시계를 통과하지 못하면 여러 가지 못생긴 색상 코드가 인라인으로 표시됩니다.


ls --color로 해석됩니다 ls --color=always.

ls --color=auto 시계에서 색상을 인쇄 하지 않습니다 . 이것은 터미널 자체에서 색상 지원을 유추하고 있음을 나타냅니다.

이유에 대한 자세한 내용 은 워치 쉘이 실제 터미널을 생각하는지 테스트 할 수 있습니다 .

$ bash -c '[[ -t 1 ]] && echo "real terminal"'
real terminal

$ watch -- "bash -c '[[ -t 1 ]] && echo "real terminal"'"
# ... nothing.

일부 응용 프로그램에서 색상을 켜야하는지 여부를 알기 위해 (또는 유사한) 것을보고있는 것 같습니다.


3
그러나 영업 이익이 작동하지 않는 이유를 알고 싶어 git status -sb이 작동하더라도 ls --color.
jobin 2012

이것은 말이됩니다. 그러나에 대한 별칭은 없습니다 git. 채색은 git의 구성 내에서 직접 설정됩니다 . 따라서 이것은 앨리어싱 문제가 아닌 것 같습니다.
Drew Noakes

빙고. 나는 내 색상을 설정할 것 auto올바르게 추측으로, 컬러 출력을 방지하기 위해 자식의 원인이되었다. 사용 always하는 대신하면이 문제를 해결했다. 많은 감사합니다!
Drew Noakes

9

git 구성 값을 사용하여 컬러 출력을 표시할지 여부를 결정합니다.

예를 들면 다음과 같습니다.

git config --global color.ui auto

색상 설정을 auto전체적으로 설정합니다 . 에서 auto모드, 자식은 OLI 제안으로, 색상 코드를 전송하기 전에 실제 터미널의 여부를 확인할 수 있습니다.

이 전역 값을로 강제 할 수 always있지만 특정 명령에 적용하는 것이 좋습니다.

git -c color.status=always status -sb

함께 모아서:

watch --color git -c color.status=always status -sb

0

git( --color) 및 watch( -c)에 색상을 사용하라는 메시지가 표시 되면 작동합니다 .

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