git log
한 줄 요약
커밋 히스토리를 조회
선행 지식
- Commit - 커밋의 개념
기본 사용법
git log현재 브랜치의 Commit 히스토리를 최신순으로 보여줍니다.
주요 옵션
| 옵션 | 설명 | 예시 |
|---|---|---|
--oneline | 한 줄씩 간략히 | git log --oneline |
-n | 최근 n개만 | git log -5 |
--graph | 그래프로 표시 | git log --graph |
--all | 모든 브랜치 | git log --all |
-p / --patch | 변경 내용 포함 | git log -p |
--stat | 변경 통계 | git log --stat |
--author | 작성자 필터 | git log --author="홍길동" |
--since / --until | 날짜 범위 | git log --since="2024-01-01" |
실제 예제
기본 로그
$ git log
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0 (HEAD -> main)
Author: 홍길동 <hong@example.com>
Date: Wed Dec 4 10:30:00 2024 +0900
feat: 로그인 기능 추가
commit 9x8y7z6w5v4u3t2s1r0q9p8o7n6m5l4k3j2i1h0g
Author: 홍길동 <hong@example.com>
Date: Tue Dec 3 15:20:00 2024 +0900
docs: README 업데이트q 키를 눌러 종료합니다.
한 줄씩 보기 (권장)
$ git log --oneline
a1b2c3d (HEAD -> main) feat: 로그인 기능 추가
9x8y7z6 docs: README 업데이트
5w4v3u2 fix: 버그 수정
1t0s9r8 Initial commit그래프로 보기
$ git log --oneline --graph --all
* a1b2c3d (HEAD -> main) Merge branch 'feature'
|\
| * 9x8y7z6 (feature) feat: 새 기능
| * 5w4v3u2 feat: 기능 구현 중
|/
* 1t0s9r8 Initial commit최근 N개만 보기
# 최근 5개
git log -5
# 최근 3개를 한 줄씩
git log --oneline -3변경 내용 함께 보기
# 전체 diff
git log -p
# 변경 통계
git log --stat출력 예시 (—stat):
commit a1b2c3d
Author: 홍길동 <hong@example.com>
Date: Wed Dec 4 10:30:00 2024
feat: 로그인 기능 추가
src/login.js | 45 +++++++++++++++++++++++++++++++++
src/auth.js | 12 +++++++--
2 files changed, 55 insertions(+), 2 deletions(-)
특정 파일의 히스토리
# 특정 파일만
git log -- src/app.js
# 특정 폴더만
git log -- src/
# 변경 내용과 함께
git log -p -- src/app.js검색/필터링
# 작성자로 필터
git log --author="홍길동"
# 날짜 범위
git log --since="2024-01-01" --until="2024-12-31"
# 커밋 메시지 검색
git log --grep="로그인"
# 변경 내용 검색 (코드에서 특정 문자열 변경 찾기)
git log -S "functionName"커밋 상세 보기
# 특정 커밋 상세 정보
git show a1b2c3d
# 커밋의 변경 파일만
git show --stat a1b2c3d
# 특정 파일의 해당 커밋 시점 내용
git show a1b2c3d:src/app.js유용한 형식 지정
# 예쁜 형식
git log --pretty=format:"%h - %an, %ar : %s"
# a1b2c3d - 홍길동, 2 hours ago : feat: 로그인 기능 추가
# 날짜 포함
git log --pretty=format:"%h %ad | %s" --date=short
# a1b2c3d 2024-12-04 | feat: 로그인 기능 추가| 포맷 코드 | 의미 |
|---|---|
%h | 짧은 커밋 해시 |
%H | 전체 커밋 해시 |
%an | 작성자 이름 |
%ae | 작성자 이메일 |
%ad | 작성 날짜 |
%ar | 상대적 날짜 |
%s | 커밋 메시지 제목 |
유용한 별칭 설정
# 예쁜 그래프 로그
git config --global alias.lg "log --oneline --graph --all --decorate"
# 사용
git lg자주 하는 실수
종료 방법을 모름
해결: q 키를 누르면 종료됩니다.
너무 많은 출력
해결: -n 옵션으로 개수 제한
git log -10 --oneline다른 브랜치의 로그가 안 보임
해결: --all 옵션 사용
git log --oneline --all