공사중

쉽게 정리한 Git 사용법 : git log의 다양한 옵션들 본문

개발 | Git

쉽게 정리한 Git 사용법 : git log의 다양한 옵션들

행운개발자 LuckyDeveloper 2019. 2. 20. 16:04

지금까지 배웠던 git log에 대해서 유용한 옵션을 하나 더 배우겠습니다. 


git log -p -2

이 명령어는 log를 보여주되 각 커밋의 diff결과를 보여줍니다. -2는 최근 두 개의 커밋에 대한 정보만 보여달라는 뜻입니다.


갯수가 아니라 시간을 기준으로 특정 시점 이후에 생성된 커밋만 보고 싶으면 이렇게 작성하면 됩니다. 


git log --since=2.weeks
git log --since="2 years 1 day 3 minutes ago"


또한 log에 대해서 어떤 파일이 수정됐는지, 얼마나 많은 파일들이 변경,추가,삭제 되었는지 요약해서 보여주는 옵션도 있습니다.

git log --stat

그리고 출력하는 내용을 어떻게 출력할지 정의하는 옵션도 있습니다.

git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"

위 두 개의 옵션에 대한 결과는 각각 아래와 같은 모습니다.

git log --pretty=oneline
ca82a6dff817ec66f44342007202690a93763949 changed the version number
085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test
a11bef06a3f659402fe7563abf99ad00de2209e6 first commit

git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
085bb3b - Scott Chacon, 6 years ago : removed unnecessary test
a11bef0 - Scott Chacon, 6 years ago : first commit

형식을 지정할 때 자주 쓰는 형식은 아래와 같습니다. 여기에서 자세한 reference를 볼 수 있고, 필요할 때 찾아보면 됩니다.

%H
커밋 해시

%h
짧은 길이 커밋 해시

%T
트리 해시

%t
짧은 길이 트리 해시

%P
부모 해시

%p
짧은 길이 부모 해시

%an
저자 이름

%ae
저자 메일

%ad
저자 시각 (형식은 –-date=옵션 참고

%ar
저자 상대적 시각

%cn
커미터 이름

%ce
커미터 메일

%cd
커미터 시각

%cr
커미터 상대적 시각

%s
요약

저자(%an)와 커미터(%cn)구분하는 것은 자료룰 수정한 사람과 직접 커밋을 한 사람이 다를 경우에 의미를 가집니다.


log를 찍을 때 그래프를 그릴 수 있습니다.

git log --graph

나중에 여러 개의 브런치에 대해서 배울 때 조금 더 직관적으로 이해할 수 있습니다.




이 외에 추가적인 옵션에 대한 설명입니다. 역시 한 번 읽어보고 존재를 알고있다가 필요할 때 찾아보면 됩니다.

-p

각 커밋에 적용된 패치를 보여준다.

--stat

각 커밋에서 수정된 파일의 통계정보를 보여준다.

--shortstat

--stat 명령의 결과 중에서 수정한 파일, 추가된 라인, 삭제된 라인만 보여준다.

--name-only

커밋 정보중에서 수정된 파일의 목록만 보여준다.

--name-status

수정된 파일의 목록을 보여줄 뿐만 아니라 파일을 추가한 것인지, 수정한 것인지, 삭제한 것인지도 보여준다.

--abbrev-commit

40자 짜리 SHA-1 체크섬을 전부 보여주는 것이 아니라 처음 몇 자만 보여준다.

--relative-date

정확한 시간을 보여주는 것이 아니라 “2 weeks ago” 처럼 상대적인 형식으로 보여준다.

--graph

브랜치와 머지 히스토리 정보까지 아스키 그래프로 보여준다.

--pretty

지정한 형식으로 보여준다. 이 옵션에는 oneline, short, full, fuller, format이 있다. format은 원하는 형식으로 출력하고자 할 때 사용한다.

--oneline

--pretty=oneline --abbrev-commit 두 옵션을 함께 사용한 것과 같다.

-(n)

최근 n 개의 커밋만 조회한다.

--since, --after

명시한 날짜 이후의 커밋만 검색한다.

--until, --before

명시한 날짜 이전의 커밋만 조회한다.

--author

입력한 저자의 커밋만 보여준다.

--committer

입력한 커미터의 커밋만 보여준다.

--grep

커밋 메시지 안의 텍스트를 검색한다.

-S

커밋 변경(추가/삭제) 내용 안의 텍스트를 검색한다.


결론적으로 실제로 사용하는 방법은 아래와 같습니다.

git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/

git log가 어떤 것인지 알았으니 그때그때 필요한 방식을 찾아서 사용하면 됩니다.