내가 사용하는 알리아스

git l

나는 로그 그래프 확인에 주로 다음 알리아스를 사용한다.

l = "log \
    --color --graph \
    --abbrev-commit \
    --pretty=format:'%Cred%h %Creset-%C(yellow)%d %Creset%s %Cgreen(%cr)%C(bold blue)<%an>'"

git l을 입력하면 다음과 같이 출력된다.

git lh

나는 25줄만 보고 싶은 경우가 흔한 편이어서 다음과 같이 git lhgit l의 결과를 앞부분만 잘라 보는 편이다.

lh = "!git l | head -25"

git lf

git --log --follow를 사용해 특정 파일 하나의 히스토리만 보고 싶을 때 쓴다. fzf를 통해 파일을 선택할 수 있다.

lf = "!# 주어진 file의 history를 출력합니다.;\n\
    fzf --preview=\"bat {}\" | xargs git l --follow"
lfp = "!# 주어진 file의 history를 자세히 출력합니다.;\n\
    fzf --preview=\"bat {}\" | xargs git l --follow -p"

Commit Ranges

두 hash값의 차이를 다음과 같이 확인할 수 있다.

git log master..develop

Pro Git에서는 위에서 사용한 .. 표기법(Double Dot)을 "master에는 없지만.. develop 에는 있는 커밋들"1이라 설명한다.

이 설명대로 생각하면 간단하게 응용할 수 있다. 위의 예제를 뒤집어서 "develop에는 있지만.. master에는 없는 커밋들"을 보고 싶다면 다음과 같이 하면 된다.

git log develop..master

branch 이름은 단순한 레퍼런스이므로 다음과 같이 사용할 수도 있다.

git log b6c69..528cb

git l b6c69..528cb  # 알리아스 사용

같은 의미를 ^reference--not reference를 사용해 표현할 수도 있다. .. 표현은 편리하지만 2개까지만 비교할 수 있으므로, 이 방법은 3개 이상의 해시를 비교할 때 유용하다.

 # master에는 없지만.. develop 에는 있는 커밋들

git log master..develop      # 두 개 비교이므로 .. 으로 가능
git log ^master develop      # 위와 같다
git log develop --not master # 위와 같다

3개를 비교한다면 .. 표기법으로는 할 수 없다. 그러므로 ^--not을 사용한다.

 # master, develop에는 있지만 hotfix 에는 없는 커밋들

git log master develop ^hotfix          # 위와 같다
git log master developt --not hotfix    # 위와 같다

참고문헌

  • Pro Git 2/E / 스캇 샤콘, 벤 스트라웁 공저 / 박창우, 이성환, 최용재 공역 / 인사이트(insight) / 2016년 03월 30일

주석

  1. Pro Git, 7.1장, 210쪽.