본문 바로가기
Linux & GIT

git log 명령 사용 - 커밋 히스토리 조회 방법들

by 누워서 코딩 2021. 7. 7.

git log 명령 사용 - 커밋 히스토리 조회 방법들

 

git log 명령의 기본 포맷 형식

 

git log [<options>] [<revision range>] [[--] <path>...]

 

git log 기본 사용

 

특별한 argument를 주지 않고 'git log' 기본 명령만 실행하면, 저장소에 저장된 커밋 히스토리(commit history)를 시간순으로 보여준다. 시간순으로 보여주기에 가장 먼저 출력되는 커밋부터 출력된다. log의 내용은 다음과 같다.

 

$ git log
commit b31c691ce5476e7d07916bd21cd75f15f4a37fba (HEAD -> test, origin/test)
Author: freernd <freernd@ggmail.com>
Date:   Tue July 07 09:54:58 2021 +0900

    new: commit test
    task: all

    Change-Id: hf89d1713349fc93744f34ec202e2a1a42fcga351
...

 

SHA-1 체크섬 값, 편집자 이름 / 이메일, 커밋한 날짜, 커밋 메시지

 

git log -p -1 옵션 사용

 

여기서 확장으로 다양한 argument를 입력하면, 원하는 히스토리만 검색이 가능하다. 자주 사용하는 옵션을 보자.

 

'-p' '-1' '-2' 옵션이 유용하다. 이 옵션은 동료가 수정한 커밋 정보를 빨리 조회하고 리뷰할 때 유용하다. 

 

-p는 각 커밋 간 diff 한 결과를 나타낸다. -1 -2 옵션은 각각 최근 1개, 2개의 커밋 히스토리 결과를 보여주는 옵션이다.

 

$ git log -p -1
commit b31c691ce5476e7d07916bd21cd75f15f4a37fba (HEAD -> test, origin/test)
Author: freernd <freernd@ggmail.com>
Date:   Tue July 07 09:54:58 2021 +0900

    new: commit test
    task: all

    Change-Id: hf89d1713349fc93744f34ec202e2a1a42fcga351

diff --git a/Commit_Test b/Commit_Test
new file mode 100755
index 0000000..231be18
--- /dev/null
+++ b/Commit_Test
@@ -0,0 +1 @@
+Hello World
\ No newline at end of file

 

git log --stat

 

--stat 옵션은 여기에 더해 히스토리의 통계 정보까지 보여준다. 한 커밋 정보의 마지막 필드에 얼마나 많이 수정되었고, 얼마나 많은 라인들이 변경/추가/삭제되었는지를 볼 수 있다.

 

$ git log --stat
commit b31c691ce5476e7d07916bd21cd75f15f4a37fba (HEAD -> test, origin/test)
Author: freernd <freernd@ggmail.com>
Date:   Tue July 07 09:54:58 2021 +0900

    new: commit test
    task: all

    Change-Id: hf89d1713349fc93744f34ec202e2a1a42fcga351

 Commit_Test | 1 +
 1 file changed, 1 insertion(+)

commit c9116646ac5449041c92945301b5c50850f2a30b
Author: freernd2 <freernd@ggmail.com>
Date:   Thu Jan 21 11:32:12 2021 +0900

    new: test commit
    task: all

 

git log --pretty

 

--pretty옵션은 히스토리 내용의 기본 형식 중 다음과 같은 다른 여러 가지 옵션의 선택이 가능하다.

 

online 옵션: oneline 옵션은 각 커밋의 한 라인만 보여주는 옵션이다. 

 

$ git log --pretty=oneline

 

format 옵션: 자신만의 포맷으로 결과 출력하고자 한다면 format옵션이 유용하다.

 

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

 

git log format 옵션 설명

 

옵션 설명
%H 커밋 해시
%h 짧은 길이 커밋 해시
%T 트리 해시
%t 짧은 길이 트리 해시
%P 부모 해시
%p 짧은 길이 부모 해시
%an 저자 이름
%ae 저자 메일
%ad 저자 시각 (형식은 –-date=옵션 참고)
%ar 저자 상대적 시각
%cn 커미터 이름
%ce 커미터 메일
%cd 커미터 시각
%cr 커미터 상대적 시각
%s 요약

 

 

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은 원하는 형식으로 출력하고자 할 때 사용한다.
--oneline --pretty=oneline --abbrev-commit 두 옵션을 함께 사용한 것과 같다.

 

자세한 옵션에 대한 설명은 git log --help 로 알아보면 상세히 볼수 있다.

 

 

댓글