🔥 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
shell
위 예시에서 볼 수 있듯이 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
shell
-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 |
shell
-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(-)
shell
이 외에도 --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
shell
위 예제에서는 해시의 앞 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
shell
-oneline
: 한 줄로 간략하게 보여줌-graph
: 브랜치/머지 그래프를 보여줌-decorate
: 브랜치와 태그 등의 참조를 보여줌-all
: 모든 브랜치의 로그를 보여줌
이렇게 하면 저장소의 전체적인 커밋 흐름을 한눈에 파악할 수 있어서 편리하죠. zsh을 사용하신다면 alias
를 설정해 두는 것도 좋은 방법이에요. 예를 들어 .zshrc
파일에 아래와 같이 설정해 두면,
alias gl="git log --oneline --graph --decorate --all"
shell
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
shell
git log
를 잘 활용하면 저장소의 히스토리를 파악하고 관리하는 데 도움이 될 거예요. 옵션도 다양하게 조합하여 사용해 보시고, 자신에게 맞는 로그 확인 방법을 찾아보세요!