지난 번 포스트에서 git log --graph가 한글로 표시될 때 줄바꿈 문제를 언급했었다.
이 때 사용한 git log 옵션은 다음과 같은데,
git log --graph --oneline --abbrev-commit --decorate [--all]
이번에는 --decorate 옵션 사용시 tag가 너무 많아서 보기가 힘들 때의 정리 tip이다.
우선 LESS 환경변수에 -S 옵션을 추가한다.
-S 옵션은 --chop-long-lines 옵션으로 긴 줄을 접어서 아래로 내리는(fold) 대신 잘라(chop)버린다.
-S option, see also the man-page.
http://superuser.com/questions/272818/how-to-turn-off-word-wrap-in-less 참조
그러면 길게 한 줄로 내용이 표시되는데 decorate 의 표시 순서가 {hash, refs, log} 순이어서 log가 나오지 않는 문제가 발생한다.
* ca5f427 (tag: merge_18500, tag: VA-v2.0.0.0.8-rc3, tag: VA-v2.0.0.0.8-rc2, tag: VA-v2.0.0.0.8-rc1, tag: MII-v2.0.0.0.7-rc3.DB99 <-- log가 없음
이제 --decorate 대신 --format 옵션을 사용하여 decorate 옵션에 의해 생기는 화면과 유사하게 만들어 줄 차례다.
format 옵션에서 사용되는 변수 중 deocrate에 유사한 포멧은 "%h %d %s" 이다.
이 중 %d가 refs를 담당하고 있으니, 순서를 바꾸어 "%h %s %d"로 하면 log도 보이고 tag도 일부 보이는 상태가 된다.
* ca5f427 R #19294 kernel header include 경로 수정 (tag: merge_18500, tag: VA-v2.0.0.0.8-rc3, tag: VA-v2.0.0.0.8-rc2, tag: VA-v2 <-- log가 등장, tag는 여전히 일부만 출력
그냥 그대로 두면, 색깔이 너무 칙칙하다. 색은 format 옵션에 %C(색)으로 주고 %Creset 으로 취소 가능한데, docerate와 같이 tag, branch, remote 별로 다른 색을 주려면 git 버전이 1.8.3 이상이어야 한다.
As of git 1.8.3 (May 24, 2013), you can use
%C(auto)
to decorate%d
in the format string ofgit log
.From the release notes:
* "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.)
http://stackoverflow.com/questions/12694510/how-to-emulate-git-log-decorates-different-colors-per-branch-type 참고
http://stackoverflow.com/a/16844346/55948 참고
따라서 다음과 같이,
"%C(auto)%h%Creset %C(auto)%s%Creset %C(auto)%d%Creset"
옵션을 주면 색색의 옷을 입은 log를 볼 수 있다.
완성된 git log 는 다음과 같다.
git log --graph --format="%C(auto)%h%Creset %C(auto)%s%Creset %C(auto)%d%Creset" [--all]
@ 주의할 점
- refs는 tag, remote_branch, local_branch 순으로 표시되므로 tag가 많이 있으면 branch 정보가 가려져서 보이지 않는다. 기존 --deocrate 옵션과 병행하여 branch 정보를 빼 먹지 말자.
- format 옵션에서 이미 oneline 옵션과 abbrev-commit 옵션을 override 하므로 graph 옵션만 넣으면 된다.
- git 버전이 1.8.3 이하인 경우 %C(auto)가 먹지 않으므로 (auto) 자리에 직접 색을 넣든지 색을 빼든지 하도록 한다.
'IT > linux' 카테고리의 다른 글
bash 설정을 이용하여 특정 디렉토리로 이동시 동작 실행 (0) | 2014.10.07 |
---|---|
여러 버전의 바이너리를 관리하고 싶을 때, update-alternatives (0) | 2014.08.28 |
빠르고 효율적인 통신을 위한 socket option (0) | 2014.05.02 |
bashrc와 bash_profile 차이 (0) | 2014.04.14 |
git log 출력시 줄바꿈때문에 한 화면에 내용이 안 보일 때, 해결법 (0) | 2013.03.29 |