🔥 git log
git은 버전 관리 시스템이므로, 저장소의 변경 사항 히스토리를 확인하는 것이 매우 중요하겠죠? 이때 git log 명령어를 사용하면 커밋 히스토리를 확인할 수 있습니다. 기본적인 사용법은 아래와 같아요.
$ git log
commit 1ba1d9b62f5637f5634354a4f9dd81d23f2057c0 (HEAD -> feature/signup)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 22:11:29 2024 +0900
Update README.md
commit 2fa353fefce1095d375f6541f24af17091fec802
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:36:21 2024 +0900
Delete README.md
commit caf90dee1b4c6b3b00c0149039d34864346e90e1 (main, feature/login)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:32 2024 +0900
Update README
commit 070ebaca5cd8eda7a17b5759dbe2b06c986e876c
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:24 2024 +0900
Initial commit
commit 713d30794120139e6f55aba91c0e2830ada99ff0
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:00:54 2024 +0900
Update hello.txt
commit 160ea51d9b3e1d3fdfcb0e22ba94f223646b9724
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 17:56:35 2024 +0900
Add message
$ git log
commit 1ba1d9b62f5637f5634354a4f9dd81d23f2057c0 (HEAD -> feature/signup)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 22:11:29 2024 +0900
Update README.md
commit 2fa353fefce1095d375f6541f24af17091fec802
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:36:21 2024 +0900
Delete README.md
commit caf90dee1b4c6b3b00c0149039d34864346e90e1 (main, feature/login)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:32 2024 +0900
Update README
commit 070ebaca5cd8eda7a17b5759dbe2b06c986e876c
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:24 2024 +0900
Initial commit
commit 713d30794120139e6f55aba91c0e2830ada99ff0
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:00:54 2024 +0900
Update hello.txt
commit 160ea51d9b3e1d3fdfcb0e22ba94f223646b9724
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 17:56:35 2024 +0900
Add message
위 예시에서 볼 수 있듯이 git log는 저장소의 커밋 히스토리를 최신 커밋부터 오래된 커밋 순서로 보여줍니다. 각 커밋은 SHA-1 해시, 작성자 정보, 날짜, 그리고 커밋 메시지를 포함하고 있죠.
옵션과 함께 사용하기
git log는 다양한 옵션과 함께 사용할 수 있어서 원하는 정보만 필터링하여 볼 수 있답니다. 자주 사용되는 옵션 몇 가지를 소개할게요.
-oneline: 각 커밋을 한 줄로 요약해서 보여줍니다.
$ git log --oneline
1ba1d9b (HEAD -> feature/signup) Update README.md
2fa353f Delete README.md
caf90de (main, feature/login) Update README
070ebac Initial commit
713d307 Update hello.txt
160ea51 Add message
9c5b645 Add hello.txt
fe5b5e0 (origin/main, origin/HEAD) update README.md
103d6c8 (origin/develop) Initial commit$ git log --oneline
1ba1d9b (HEAD -> feature/signup) Update README.md
2fa353f Delete README.md
caf90de (main, feature/login) Update README
070ebac Initial commit
713d307 Update hello.txt
160ea51 Add message
9c5b645 Add hello.txt
fe5b5e0 (origin/main, origin/HEAD) update README.md
103d6c8 (origin/develop) Initial commit-graph: 브랜치와 머지 히스토리를 그래프로 보여줍니다.
$ git log --graph
* commit 1ba1d9b62f5637f5634354a4f9dd81d23f2057c0 (HEAD -> feature/signup)
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 22:11:29 2024 +0900
|
| Update README.md
|
* commit 2fa353fefce1095d375f6541f24af17091fec802
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 18:36:21 2024 +0900
|
| Delete README.md
|
* commit caf90dee1b4c6b3b00c0149039d34864346e90e1 (main, feature/login)
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 18:07:32 2024 +0900
|
| Update README
|
* commit 070ebaca5cd8eda7a17b5759dbe2b06c986e876c
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 18:07:24 2024 +0900
|
| Initial commit
|$ git log --graph
* commit 1ba1d9b62f5637f5634354a4f9dd81d23f2057c0 (HEAD -> feature/signup)
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 22:11:29 2024 +0900
|
| Update README.md
|
* commit 2fa353fefce1095d375f6541f24af17091fec802
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 18:36:21 2024 +0900
|
| Delete README.md
|
* commit caf90dee1b4c6b3b00c0149039d34864346e90e1 (main, feature/login)
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 18:07:32 2024 +0900
|
| Update README
|
* commit 070ebaca5cd8eda7a17b5759dbe2b06c986e876c
| Author: CodingMax <biz.codingmax@gmail.com>
| Date: Fri Mar 29 18:07:24 2024 +0900
|
| Initial commit
|-stat: 각 커밋에서 수정된 파일들의 통계 정보를 보여줍니다.
$ git log --stat
commit 1ba1d9b62f5637f5634354a4f9dd81d23f2057c0 (HEAD -> feature/signup)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 22:11:29 2024 +0900
Update README.md
README.md | 1 +
1 file changed, 1 insertion(+)
commit 2fa353fefce1095d375f6541f24af17091fec802
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:36:21 2024 +0900
Delete README.md
README.md | 1 -
1 file changed, 1 deletion(-)
commit caf90dee1b4c6b3b00c0149039d34864346e90e1 (main, feature/login)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:32 2024 +0900
Update README
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 070ebaca5cd8eda7a17b5759dbe2b06c986e876c
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:24 2024 +0900
Initial commit
README.md | 4 +---
hello.txt | 2 +-
2 files changed, 2 insertions(+), 4 deletions(-)
$ git log --stat
commit 1ba1d9b62f5637f5634354a4f9dd81d23f2057c0 (HEAD -> feature/signup)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 22:11:29 2024 +0900
Update README.md
README.md | 1 +
1 file changed, 1 insertion(+)
commit 2fa353fefce1095d375f6541f24af17091fec802
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:36:21 2024 +0900
Delete README.md
README.md | 1 -
1 file changed, 1 deletion(-)
commit caf90dee1b4c6b3b00c0149039d34864346e90e1 (main, feature/login)
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:32 2024 +0900
Update README
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 070ebaca5cd8eda7a17b5759dbe2b06c986e876c
Author: CodingMax <biz.codingmax@gmail.com>
Date: Fri Mar 29 18:07:24 2024 +0900
Initial commit
README.md | 4 +---
hello.txt | 2 +-
2 files changed, 2 insertions(+), 4 deletions(-)
이 외에도 --author, --after, --before 등 필터링 옵션이 많이 있으니 man git-log나 git log --help로 확인해 보는게 좋을 것 같습니다.
로그 포맷 변경하기
git log는 --pretty 옵션을 사용하여 출력 포맷을 사용자 정의할 수도 있습니다. 미리 정의된 포맷으로는 oneline, short, medium, full, fuller, email, raw 등이 있고요. 또는 직접 포맷을 지정할 수도 있죠.
$ git log --pretty=format:"%h - %an, %ar : %s"
1ba1d9b - CodingMax, 25 minutes ago : Update README.md
2fa353f - CodingMax, 4 hours ago : Delete README.md
caf90de - CodingMax, 4 hours ago : Update README
070ebac - CodingMax, 4 hours ago : Initial commit
713d307 - CodingMax, 5 hours ago : Update hello.txt
160ea51 - CodingMax, 5 hours ago : Add message
9c5b645 - CodingMax, 5 hours ago : Add hello.txt
fe5b5e0 - codingmax, 5 hours ago : update README.md
103d6c8 - Sungcheol Kim, 5 hours ago : Initial commit
$ git log --pretty=format:"%h - %an, %ar : %s"
1ba1d9b - CodingMax, 25 minutes ago : Update README.md
2fa353f - CodingMax, 4 hours ago : Delete README.md
caf90de - CodingMax, 4 hours ago : Update README
070ebac - CodingMax, 4 hours ago : Initial commit
713d307 - CodingMax, 5 hours ago : Update hello.txt
160ea51 - CodingMax, 5 hours ago : Add message
9c5b645 - CodingMax, 5 hours ago : Add hello.txt
fe5b5e0 - codingmax, 5 hours ago : update README.md
103d6c8 - Sungcheol Kim, 5 hours ago : Initial commit
위 예제에서는 해시의 앞 7자리(%h), 저자명(%an), 상대적 날짜(%ar), 요약 메시지(%s)를 보여주는 사용자 정의 포맷을 사용했어요.
활용 방법
저는 보통 아래와 같은 명령어를 사용하여 저장소의 커밋 로그를 간단히 확인한답니다.
$ git log --oneline --graph --decorate --all
* 1ba1d9b (HEAD -> feature/signup) Update README.md
* 2fa353f Delete README.md
* caf90de (main, feature/login) Update README
| * aec5901 (refs/stash) WIP on (no branch): 070ebac Initial commit
|/|
| * 2443c91 index on (no branch): 070ebac Initial commit
|/
* 070ebac Initial commit
* 713d307 Update hello.txt
* 160ea51 Add message
* 9c5b645 Add hello.txt
* fe5b5e0 (origin/main, origin/HEAD) update README.md
* 103d6c8 (origin/develop) Initial commit
$ git log --oneline --graph --decorate --all
* 1ba1d9b (HEAD -> feature/signup) Update README.md
* 2fa353f Delete README.md
* caf90de (main, feature/login) Update README
| * aec5901 (refs/stash) WIP on (no branch): 070ebac Initial commit
|/|
| * 2443c91 index on (no branch): 070ebac Initial commit
|/
* 070ebac Initial commit
* 713d307 Update hello.txt
* 160ea51 Add message
* 9c5b645 Add hello.txt
* fe5b5e0 (origin/main, origin/HEAD) update README.md
* 103d6c8 (origin/develop) Initial commit
-oneline: 한 줄로 간략하게 보여줌-graph: 브랜치/머지 그래프를 보여줌-decorate: 브랜치와 태그 등의 참조를 보여줌-all: 모든 브랜치의 로그를 보여줌
이렇게 하면 저장소의 전체적인 커밋 흐름을 한눈에 파악할 수 있어서 편리하죠. zsh을 사용하신다면 alias를 설정해 두는 것도 좋은 방법이에요. 예를 들어 .zshrc 파일에 아래와 같이 설정해 두면,
alias gl="git log --oneline --graph --decorate --all"alias gl="git log --oneline --graph --decorate --all"gl이라고만 입력해도 위의 명령어가 실행되므로 편리하게 사용할 수 있습니다.
$ gl
* 1ba1d9b (HEAD -> feature/signup) Update README.md
* 2fa353f Delete README.md
* caf90de (main, feature/login) Update README
| * aec5901 (refs/stash) WIP on (no branch): 070ebac Initial commit
|/|
| * 2443c91 index on (no branch): 070ebac Initial commit
|/
* 070ebac Initial commit
* 713d307 Update hello.txt
* 160ea51 Add message
* 9c5b645 Add hello.txt
* fe5b5e0 (origin/main, origin/HEAD) update README.md
* 103d6c8 (origin/develop) Initial commit
$ gl
* 1ba1d9b (HEAD -> feature/signup) Update README.md
* 2fa353f Delete README.md
* caf90de (main, feature/login) Update README
| * aec5901 (refs/stash) WIP on (no branch): 070ebac Initial commit
|/|
| * 2443c91 index on (no branch): 070ebac Initial commit
|/
* 070ebac Initial commit
* 713d307 Update hello.txt
* 160ea51 Add message
* 9c5b645 Add hello.txt
* fe5b5e0 (origin/main, origin/HEAD) update README.md
* 103d6c8 (origin/develop) Initial commit
git log를 잘 활용하면 저장소의 히스토리를 파악하고 관리하는 데 도움이 될 거예요. 옵션도 다양하게 조합하여 사용해 보시고, 자신에게 맞는 로그 확인 방법을 찾아보세요!










