자식 출력을 채색하는 방법?


255

git (또는 모든 명령)의 출력 색상을 지정하는 방법이 있습니까?

치다:

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   app/models/message_type.rb
#
no changes added to commit (use "git add" and/or "git commit -a")
baller@Laptop:~/rails/spunky-monkey$ git add app/models

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   app/models/message_type.rb
#

결과는 동일하게 보이지만 정보는 완전히 다릅니다. 파일이 커밋되지 않은 스테이지에서 스테이징되었습니다.

출력물을 채색하는 방법이 있습니까? 예를 들어, 준비되지 않은 파일은 빨간색, 준비된 녹색입니까?

아니면 Changes not staged for commit:빨간색과 # Changes to be committed:초록색?

우분투에서 일하기.

편집 : 인터넷 검색은이 답변을 찾았습니다 git config --global --add color.ui true.

그러나 명령 출력에 색상을 추가하는 더 일반적인 해결책이 있습니까?


1
모든 명령 출력을 색칠하는 것을 원하십니까? 어떤 부분을 색칠해야하는지 어떻게 알 수 있습니까?
Michael Mrozek

정규 표현식을 사용하여 구성하는 방법이 있는지 추측합니다. 각 색상에는 정규 표현식이 시작될 수 있습니다. 그리고 모든 색상을 끄는 기본 색상 정규식이있을 수 있습니다. 텍스트 "foo"가 나타나면 특정 색상으로 표시하십시오.
B Seven

답변:


268

예를 들어 다음 내용 으로 섹션 [color]을 만들 수 있습니다~/.gitconfig

[color]
  diff = auto
  status = auto
  branch = auto
  interactive = auto
  ui = true
  pager = true

당신은 또한 당신이 어떤 방식으로 색칠하고 싶은 것을 세밀하게 제어 할 수 있습니다.

[color "status"]
  added = green
  changed = red bold
  untracked = magenta bold

[color "branch"]
  remote = yellow

나는 이것이 당신이 시작되기를 바랍니다. 물론 색상을 지원하는 터미널이 필요합니다.


14
git config --global color.ui auto (@Evgeny의 답변)를 가장 가치있게 생각할 가치가 있다고 생각합니다. 나는 둘 다 upvoted ... 나는 단지 여기에 올 인터넷을 위해, 많은 사람들이 그 단순한 하나의 라이너를 원한다고 생각합니다. 그들이 얻는다면 더 나아지고 당신의 여분의 선함이 있습니다.
msouth

이것은 [color "status"]내가 추가 한 섹션 에서 완벽하게 작동했습니다 branch = yellow.
Wayne Werner

3
당신은 추가 할 수 있습니다 [색상] 프로젝트의 .git / config 파일도에 섹션
안드레이

그리고 git 명령을 한 번만 호출하기 위해 구성 변수를 설정할 수 있습니다. stackoverflow.com/a/18304605/134044
NeilG

220

아마도 사용하고 싶을 것입니다

git config --global color.ui auto

auto부분은 git이 지원하는 터미널에서만 색상을 사용하려고 시도하고 git 명령의 출력을 파일로 리디렉션하면 ANSI 시퀀스를 얻지 못한다고 말합니다. 로 설정하는 true것은 autoGit 1.8.4 이후의 기본값이기도합니다.

이것은 git 명령으로 사용 가능한 color.ui모든 다양한 color.*구성 을 포함하는 메타 구성입니다 .

자세한 내용은에 자세히 설명되어 git help config있습니다.


color.ui true(이것이 auto가리키는) 와의 차이점을 설명 할 수 있습니까 always? 문서를 읽었 지만 여전히 차이가 없습니다.
chharvey

19
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto

참고로, 이것은 git 버전 1.5.2.1에서만 작동했지만 다른 답변은 그렇지 않았습니다.
AbhiNickz

14

허용되는 답변은 가장 일반적인 솔루션을 제공합니다. 어떤 이유로 든 솔루션을 구성을 영구적으로 변경할 필요가없는 경우 단일 git 명령에 대한 구성을 무시할 수 있습니다.

git -c color.ui=always <usual git command and options>

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

git -c color.ui=always status
git -c color.ui=always diff

테스트 : git 2.4.6에서 지원되며 git 1.7.1 에서는 지원 되지 않습니다 .


2
less방금 전과 같이 배관 할 때 색상을 얻으려는 사람 은을 less통해 색상 이스케이프 문자를 터미널로 전달할 수 있습니다 less -R.
xdhmoore

이 기능은 언제 추가 되었습니까?
Ondra Žižka

11
git config --global color.ui always
git config --global color.branch always
git config --global color.diff always
git config --global color.interactive always
git config --global color.status always
git config --global color.grep always
git config --global color.pager true
git config --global color.decorate always
git config --global color.showbranch always

1

임의 명령 출력 색상을 사용하여이 작업을 수행 할 수 있습니다 . 대부분 작동하지만 입력을 기대하는 프롬프트가 표시되지 않고 알려진 필요한 입력을 입력하고 Enter 키를 눌러 모든 경우에 계속할 수없는 버그를 해결하는 방법을 알지 못했습니다.

~/.acoc.conf를위한 git:

# git
[git/ae]
/.*(error:.*)/                                    red+bold
/.*(warning:.*)/                                  yellow
/.*(hint:.*)/                                     magenta
/.*(up-to-date).*/                                green+bold
/.*(nothing to commit).*/                         green
/^(\+.*)/                                         green
/^(-.*)/                                          red

요식 잘와 함께 작동 alias git="acoc git"에서 .bash_profile.


에 대한 구성을 공유 할 수 있습니까 acoc?
Greg Dubicki

Nvm, 쓰기 쉬웠습니다. :) 답변에 추가되었습니다.
Greg Dubicki

1

에 컬러 git diff파이프의 경우 다음 less과 같이 작동합니다.

git -c color.diff=always diff [...] | less -R

0

게시물의 나이가 4 살이라는 것을 알고 있지만 아무도 눈을 가리지 않는 캠프에서 아무도 응답하지 않았습니다. 색상을 구별 할 수 있으면 내 게시물을 무시하십시오.

예를 들어 "git status"는 배경 / 흰색 바탕에 흰색 / 검정색 (알기 쉬운), 짙은 회색 (삭제됨) (검정색 배경은 읽을 수 있지만 흰색 배경은 읽을 수 있음) 및 중간 회색 (보리가 읽을 수 있음) 인 텍스트를 표시합니다. 흰색 배경에 읽을 수없는 배경). 나는 읽기 어려운 텍스트를 읽을 수 있도록 터미널 창의 배경을 흰색 / 검정색으로 전환했습니다. 간단한 해결책은 다음과 같습니다.

 git status | more

표준 흰색 또는 검은 색 배경 터미널 창에서 모든 텍스트를 읽을 수 있습니다.


1
기본적으로 구성을 변경하여 모든 항목을 색상 없음으로 설정할 수도 있습니다 ( color.ui = never).
모자를

0

또는 다음을 통해 모든 / 대부분의 채색을 끕니다.

git config --global color.ui false
git config --global color.branch false
git config --global color.diff false
git config --global color.interactive false
git config --global color.status false
git config --global color.grep false
git config --global color.pager false
git config --global color.decorate false
git config --global color.showbranch false

OP는 색상 을 끄지 않고 색상을 켜려고 했습니다 . OP에서 그는 어떻게 할 것인지를 언급 git했으며 좀 더 세계적인 의미로 어떻게 할 것인지를 원했습니다. 그러한 방법을 알고 있다면 답을 편집하여 설명하십시오.
집시 Spellweaver

때로는 사람들이 밀접하게 관련되어 있지만 약간 다른 것을 찾고 있지만 downvote에 감사드립니다.
theRiley

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