실행 git log --decorate --pretty=oneline
하면 출력에 다음과 같은 항목이 있습니다.(HEAD, refs/published/master, master)
에 채색 이 있습니다.
또한 gitconfig에 다음이 있습니다.
[color "branch"]
current = yellow reverse
local = yellow
remote = green
다음과 같은 사용자 지정 형식을 수행 할 때 이러한 색상을 어떻게 복제합니까?
git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
답변
자식 1.8.3 (5 월 (24), 2013)로, 당신이 사용할 수있는 %C(auto)
장식 %d
의 형식 문자열에 git log
.
로부터 릴리스 노트 :
* "git log --format" specifier learned %C(auto) token that tells Git
to use color when interpolating %d (decoration), %h (short commit
object name), etc. for terminal output.)
답변
은 git log --decorate
기본적으로 넣어 것입니다 :
- 청록색의 HEAD
- 붉은 외딴 가지
- 녹색 태그
그리고 통해 변경할 수 있습니다 color.decorate
구성을 .
그러나이 git log --format
구체적으로 표시하는 방법은 제공하지 않습니다 HEAD
또는 리모컨 또는 지점 : 세 가지를 통해 표시됩니다 %d
가능한 한 색상.
로 업데이트 할 수 있습니다 2013, 아래 언급 에 의해 Elad 샤 하르 (upvoted), 1.8.3 이벤트를 한 번 더 옵션을 이눔 :
git log –format
이제 터미널 출력을%C(auto)
위해%d
(장식),%h
(짧은 커밋 객체 이름) 등을 해결할 때 Git에게 색상을 사용하도록 지시 하는 토큰을 자랑합니다 .
이 Atlassian 블로그 게시물 에서는이 기능이 형식 ( git rebase
, git count-objects
) 및 색상 ( git branch -vv
) 에 중점을 둔 다른 여러 기능의 일부라고 설명합니다.
이것은 출력이 터미널 1에 사용되지 않을 때 자동으로 색상을 비활성화하는 auto,reset
1.8.2 이전 버전에 추가 되었습니다.
%C(auto,blue)Hello%C(auto,reset)
참고 : git 2.4+ (2015 년 2 분기)는 브랜치 이름 주변의 색상을 더 잘 재설정 할 것입니다.
참조 5ee8758을 투입 하여 (Junio C 하마노 gitster
) :
log --decorate
: 다음 항목에 “커밋”색상을 누출하지 마십시오.”
git log --decorate
“에서 다음과 같은 커밋 헤더를 볼 수 있습니다.
commit ... (HEAD, jc/decorate-leaky-separator-color)
여기서 ”
commit ... (
“는에서color.diff.commit
, ”HEAD
“에서color.decorate.head
, ”,
“에서color.diff.commit
, 분기 이름을 입력
color.decorate.branch
한 다음 ”)
” 을 닫 습니다.color.diff.commit
.HEAD 및 로컬 브랜치 이름을 본문 텍스트와 같은 색으로 칠하고 싶다면 (아마도 청록색과 초록색이 흑백 터미널에서 너무 희미해서 읽을 수 없기 때문일 것입니다), 이렇게 말하고 싶지 않을 것입니다.
[color "decorate"]
head = black
branch = black
왜냐하면 white-on-black 터미널에서 동일한 구성을 재사용 할 수 없기 때문입니다. 당신은 순진하게 기대할 것입니다
[color "decorate"]
head = normal
branch = normal
하지만 안타깝게도 그렇지 않습니다. 장식 요소 사이의 여는 괄호 또는 쉼표와 동일한 색상으로
문자열 ”HEAD
“및 분기 이름을 그립니다 .
이는 코드가 “접두사”를 고유 한 색상으로 인쇄 한 후 색상 재설정을 잊어 버리기 때문입니다.
git 2.5 (2015 년 2 분기)에서 버그가 수정되었습니다.
참조 429ad20을 투입 하여 Junio C 하마노 ( gitster
) 5 월 13 일 2015 년
(에 의해 합병 Junio C 하마노 – gitster
– 에 fd70780 커밋 2015 년 5 월 22 일)을
log
: 장식 이름을 너무 빨리 줄이지 마십시오.
log --decorate
현재 브랜치의 끝에 커밋을 보여주는 ” “Git 2.4의 개선 사항 (예 : ”HEAD -> master
“)은 –decorate = full과 함께 작동하지 않았습니다.
망할 놈의 2.9.x + (Q3 2016) 또 다른 버그가 해결됩니다 명예 color=auto
를 들어%C(auto)
Git 2.10.2 (2016 년 10 월)는 커밋 82b83da (2016 년 9 월 29 일) 및 René Scharfe (“)의 커밋 c99ad27 (2016 년 9 월 17 일 )로 다른 버그를 수정했습니다 . (Merged by Junio C Hamano — in commit 76796d4 , 28 Oct 2016)
gitster
pretty
: 재설정 추가 방지%C(auto)
출력이 비어있는 경우
%C(auto)
자동 색상이 의도 한대로 표시되도록 색상 및 속성을 재설정하는 이스케이프 시퀀스를 내 보냅니다 .
그만 그 출력 strbuf이 비어있는 경우 , 즉 때%C(auto)
형식 문자열의 시작 부분에 나타날 그러면 재설정 할 필요가없고 출력에 몇 바이트를 저장하기 때문입니다.
pretty
:%C(auto)
모든 속성을 재설정 하자색상 및 속성 을 재설정
%C(auto)
하여 완전 자동 제어를 활성화합니다. 그렇지 않으면 굵게 또는 반전과 같은 속성이 이전%C
자리 표시 자 에서 여전히 유효 할 수 있습니다 .
답변
괄호로 묶습니다.
%C(...): color specification, as described in color.branch.* config option
그래서 %C(yellow reverse)
작동합니다.
답변
config 옵션 log.decorate
은 로그의 기본 장식을 활성화 / 비활성화 할 수 있습니다.
git config --global log.decorate full
완료되면 color.decorate.*
색상을 가지고 놀 수 있습니다.
답변
일부는 이것을 사용하기를 원할 수 있습니다. %C(colorname)
이것은 색상 구성을 변경할 필요가 없습니다.
예 : 저자 이름을 노란색으로 채색
--pretty=format:"%C(yellow)%an%Creset"
일반 ANSI 색상은 https://en.wikipedia.org/wiki/ANSI_escape_code에서 작동합니다.
- 검정
- 빨간
- 초록
- 노랑
- 푸른
- 마젠타
- 청록색
- 하얀