본문 바로가기

SCM/Git

11. Git 커밋 이력조회 - git log

저장소에 있는 Commit 이력을 조회할 경우 git log 명령을 사용한다.
 
 

git log
 
대표적으로 간단히 사용하는 형식은 아래와 같다.
 
$ git log // 커밋 이력 상세 조회. 가장 최근의 커밋이 먼저 나오고 스페이스 바를 누르면 변경 이력이 하나씩 보여진다.
$ git log --oneline // 커밋 이력 중 커밋 ID 와 타이틀 메시지만 조회
$ git log --oneline --decorate --graph --all// 모든 브랜치 커밋 이력 조회
$ git log --index.html // 특정 파일의 변경 커밋 조회
$ git log -p // diff 를 보여준다.
$ git log -p -2 // 최근 두 개의 결과만 diff 를 보여준다.
 
--stat 옵션으로 각 커밋의 통계 정보를 조회할 수 있다.
 
이 명령은 어떤 파일이 수정됐는지, 얼마나 많은 파일이 변경됐는지
 
얼마나 많은 라인을 추가하거나 삭제했는지 보여준다. 
 
$ git log --stat
 
다른 유용한 옵션으로 --pretty 가 있다.
 
각 커밋 정보를 한 라인으로 요약해 보고 싶을 때는 아래와 같이 한다. 
 
= short, full, fuller 를 입력하면 조금씩 더 많은 정보를 볼 수 있다.
 
$ git log --pretty=oneline
 
=format 옵션을 입력하면 나만의 포맷으로 결과를 출력할 수 있다.
 
$ 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
 
이때 포멧을 구성하기 위해 아래 옵션을 사용한다.
 
옵션 설명
%H
커밋 해시
%h
짧은 길이 커밋 해시
%T
트리 해시
%t
짧은 길이 트리 해시
%P
부모 해시
%p
짧은 길이 부모 해시
%an
저자 이름
%ae
저자 메일
%ad
저자 시각 (형식은 –date= 옵션 참고)
%ar
저자 상대적 시각
%cn
커미터 이름
%ce
커미터 메일
%cd
커미터 시각
%cr
커미터 상대적 시각
%s
요약
oneline과 format 옵션은 --graph 옵션과 함께 사용할 때 더 빛난다.
 
이 명령은 브랜치와 머지 히스토리를 보여주는 아스키 그래프를 출력한다.
 
$ git log --pretty=format:"%h %s" --graph
 
 

git log 주요옵션
옵션 설명
-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은 원하는 형식으로 출력하고자 할 때 사용한다.
 

git log 조회범위
 
기간, 저자, 커미터, 특정 텍스트 포함 여부 등을 사용해서 조회 범위를 조정할 수 있다.
 
예를 들어 아래는 2주 이내의 log 만 본다.
 
$ git log --since=2.weeks
 
아래는 Sfunction_name 이 포함된 경우만 본다.
 
$ git log --S function_name
 
조회 관련 옵션은 아래와 같은 것들이 있다.
옵션 설명
-(n)
최근 n 개의 커밋만 조회한다.
--since--after
명시한 날짜 이후의 커밋만 검색한다.
--until--before
명시한 날짜 이전의 커밋만 조회한다.
--author
입력한 저자의 커밋만 보여준다.
--committer
입력한 커미터의 커밋만 보여준다.
--grep
커밋 메시지 안의 텍스트를 검색한다.
-S
커밋 변경(추가/삭제) 내용 안의 텍스트를 검색한다.