git log 사용법
Git으로 프로젝트를 진행하다 보면 “지난주에 이 파일 누가 수정했지?” “이 기능은 언제 추가된 거야?” 같은 궁금증이 생기기 마련입니다.
이럴 때 커밋 히스토리를 살펴볼 수 있는 git log 명령어가 유용한데요.
git log는 저장소의 커밋 기록을 시간 역순으로 보여주는 명령어입니다.
단순히 커밋 목록만 나열하는 게 아니라 옵션을 조합하면 원하는 정보만 골라서 볼 수 있어서 코드 리뷰나 디버깅, 릴리스 관리 등 여러 상황에서 두루 쓰이죠.
이번 글에서는 git log의 기본 사용법부터 실전에서 유용한 옵션까지 함께 알아보겠습니다.
기본 사용법
git log를 인자 없이 실행하면 현재 브랜치의 커밋 히스토리를 최신 순으로 보여줍니다.
$ git log
commit a80b4e5f987e666cd6473fae575fd0dd34967007 (HEAD -> main)
Author: Dale Seo <dale@example.com>
Date: Thu Feb 13 10:30:00 2026 +0900
사용자 프로필 페이지 추가
commit 6af2cdf4b2e8a1d3c5f7e9b0a2d4f6e8c0b2a4d6
Author: Dale Seo <dale@example.com>
Date: Wed Feb 12 15:20:00 2026 +0900
검색 기능 개선
commit f9a5b77e3d1c4a6b8e0f2d4c6a8b0e2d4f6a8c0b
Author: Dale Seo <dale@example.com>
Date: Tue Feb 11 09:10:00 2026 +0900
초기 프로젝트 설정
각 커밋마다 커밋 해시, 작성자, 날짜, 커밋 메시지가 표시됩니다.
커밋이 많으면 페이저(pager)가 열리는데요. q를 누르면 빠져나올 수 있어요.
페이저 없이 터미널에 바로 출력하고 싶다면 --no-pager 옵션을 쓰면 됩니다.
$ git --no-pager log
매번 옵션을 붙이기 번거롭다면 아예 설정으로 꺼둘 수도 있어요.
$ git config --global pager.log false
이렇게 하면 git log를 실행할 때 항상 페이저 없이 출력됩니다.
한 줄로 보기
커밋 정보를 한 줄씩 간략하게 보고 싶다면 --oneline 옵션을 씁니다.
$ git log --oneline
a80b4e5 (HEAD -> main) 사용자 프로필 페이지 추가
6af2cdf 검색 기능 개선
f9a5b77 초기 프로젝트 설정
커밋 해시 앞 7자리와 제목만 나오기 때문에 히스토리를 빠르게 훑어볼 때 좋습니다.
실무에서 가장 자주 쓰이는 옵션이라 해도 과언이 아니에요.
저도 git log를 쓸 때 거의 항상 --oneline을 붙이는 편입니다.
커밋 개수 제한
최근 커밋 몇 개만 보고 싶다면 -n 옵션으로 개수를 제한할 수 있습니다.
# 최근 5개 커밋만 표시
$ git log -5 --oneline
a80b4e5 (HEAD -> main) 사용자 프로필 페이지 추가
6af2cdf 검색 기능 개선
f9a5b77 초기 프로젝트 설정
e3d1c4a README 작성
b8e0f2d 라이선스 파일 추가
-n 5와 -5는 같은 의미입니다.
--oneline과 함께 쓰면 “최근 커밋 몇 개를 빠르게 확인”할 수 있어서 편리하죠.
변경 내용 함께 보기
각 커밋에서 어떤 파일이 얼마나 변경되었는지 알고 싶다면 --stat 옵션을 씁니다.
$ git log --stat -2
commit a80b4e5 (HEAD -> main)
Author: Dale Seo <dale@example.com>
Date: Thu Feb 13 10:30:00 2026 +0900
사용자 프로필 페이지 추가
src/pages/profile.js | 25 +++++++++++++++++++++++++
src/styles/profile.css | 42 ++++++++++++++++++++++++++++++++++++++++++
src/components/Nav.jsx | 3 ++-
3 files changed, 69 insertions(+), 1 deletion(-)
commit 6af2cdf
Author: Dale Seo <dale@example.com>
Date: Wed Feb 12 15:20:00 2026 +0900
검색 기능 개선
src/components/Search.jsx | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
파일별 추가/삭제 줄 수가 막대그래프 형태로 나와서 변경 규모를 한눈에 파악할 수 있어요.
실제 코드 변경 내용(diff)까지 보고 싶다면 -p 옵션을 씁니다.
$ git log -p -1
다만 diff 출력은 꽤 길어질 수 있으니 -1 같은 개수 제한과 함께 쓰는 게 좋습니다.
특정 커밋의 변경 내용을 자세히 들여다보려면 git show 명령어가 더 적합할 수 있어요.
커밋하기 전에 작업 디렉토리의 변경 내용을 확인하고 싶다면 git diff를 사용하면 됩니다.
출력 형식 지정
--format 옵션으로 커밋 정보의 출력 형식을 자유롭게 바꿀 수 있습니다.
$ git log --format="%h %s (%an, %ar)" -5
a80b4e5 사용자 프로필 페이지 추가 (Dale Seo, 2 hours ago)
6af2cdf 검색 기능 개선 (Dale Seo, 1 day ago)
f9a5b77 초기 프로젝트 설정 (Dale Seo, 2 days ago)
e3d1c4a README 작성 (Dale Seo, 3 days ago)
b8e0f2d 라이선스 파일 추가 (Dale Seo, 4 days ago)
--pretty=format:으로 쓸 수도 있는데 --format이 좀 더 간결합니다.
자주 쓰이는 형식 지정자를 정리해볼게요.
| 지정자 | 설명 |
|---|---|
%H | 전체 커밋 해시 |
%h | 짧은 커밋 해시 (7자리) |
%an | 작성자 이름 |
%ae | 작성자 이메일 |
%ar | 작성 일시 (상대적, 예: 3 days ago) |
%ad | 작성 일시 (절대적) |
%s | 커밋 제목 (첫 줄) |
%b | 커밋 본문 |
%d | 브랜치/태그 정보 |
날짜 형식을 바꾸고 싶다면 --date 옵션을 함께 쓸 수 있습니다.
$ git log --format="%h %ad %s" --date=short -3
a80b4e5 2026-02-13 사용자 프로필 페이지 추가
6af2cdf 2026-02-12 검색 기능 개선
f9a5b77 2026-02-11 초기 프로젝트 설정
--date에는 short, relative, iso, format:"%Y/%m/%d" 등 다양한 값을 지정할 수 있습니다.
브랜치 그래프 보기
여러 브랜치가 갈라지고 합쳐지는 히스토리를 시각적으로 보고 싶다면 --graph 옵션을 씁니다.
$ git log --oneline --graph --all
* a80b4e5 (HEAD -> main) 사용자 프로필 페이지 추가
* m7e8f9a Merge branch 'feature/search'
|\
| * c3d4e5f 검색 결과 페이지네이션
| * b2c3d4e 검색 API 연동
|/
* 6af2cdf 검색 기능 개선
* f9a5b77 초기 프로젝트 설정
--all을 함께 쓰면 현재 브랜치뿐 아니라 모든 브랜치의 히스토리가 표시됩니다.
브랜치 간의 병합 흐름이 아스키 아트로 그려져서 프로젝트의 전체 개발 흐름을 파악하기 좋죠.
--oneline과 --graph를 함께 쓰는 조합은 워낙 자주 쓰다 보니 별칭(alias)으로 등록해두는 분도 많아요.
$ git config --global alias.lg "log --oneline --graph --all"
$ git lg
Git 설정에 대해서는 git config 사용법에서 자세히 다루고 있으니 참고 바랍니다.
날짜로 필터링
특정 기간의 커밋만 보고 싶다면 --since와 --until 옵션을 씁니다.
# 최근 1주일간의 커밋
$ git log --since="1 week ago" --oneline
# 특정 날짜 범위
$ git log --since="2026-01-01" --until="2026-01-31" --oneline
# 최근 3일간의 커밋
$ git log --since="3 days ago" --oneline
--after는 --since와 같고 --before는 --until과 같은 의미입니다.
릴리스 노트를 작성하거나 특정 기간의 작업 내역을 정리할 때 유용하게 쓸 수 있어요.
작성자로 필터링
특정 사람이 작성한 커밋만 보려면 --author 옵션을 씁니다.
$ git log --author="Dale" --oneline
이름의 일부만 입력해도 되고요. 정규 표현식도 쓸 수 있습니다.
# 여러 사람의 커밋을 동시에 검색
$ git log --author="Dale\|Kim" --oneline
팀 프로젝트에서 특정 팀원의 작업 내역을 확인하거나 코드 리뷰할 때 쓸 일이 많죠.
커밋 메시지로 검색
커밋 메시지에 특정 키워드가 포함된 커밋을 찾으려면 --grep 옵션을 씁니다.
$ git log --grep="버그" --oneline
6af2cdf 결제 모듈 버그 수정
b8e0f2d 로그인 버그 수정
기본적으로 대소문자를 구분하는데 -i 옵션을 함께 쓰면 대소문자를 무시합니다.
$ git log --grep="fix" -i --oneline
여러 키워드를 동시에 검색하려면 --grep을 여러 번 쓰면 됩니다.
기본적으로 OR 조건으로 동작하고 --all-match를 추가하면 AND 조건이 돼요.
# "버그" 또는 "수정"이 포함된 커밋
$ git log --grep="버그" --grep="수정" --oneline
# "버그"와 "수정"이 모두 포함된 커밋
$ git log --grep="버그" --grep="수정" --all-match --oneline
코드 변경으로 검색
커밋 메시지가 아니라 실제 코드 변경 내용에서 특정 문자열을 찾고 싶을 때는 -S 옵션을 씁니다.
이 옵션은 흔히 “pickaxe”라고 불리는데요.
# "useState"가 추가되거나 삭제된 커밋 검색
$ git log -S "useState" --oneline
a80b4e5 사용자 프로필 페이지 추가
f9a5b77 초기 프로젝트 설정
-S는 해당 문자열이 추가되거나 삭제되어 등장 횟수가 변한 커밋을 찾아줍니다.
“이 함수는 언제 도입된 거지?” “이 변수는 어느 커밋에서 삭제됐지?” 같은 질문에 답할 때 아주 유용하죠.
정규 표현식으로 검색하고 싶다면 -G 옵션을 쓸 수 있습니다.
# 정규 표현식으로 코드 변경 검색
$ git log -G "function\s+handle" --oneline
특정 파일의 히스토리
특정 파일이나 디렉토리의 변경 이력만 보고 싶다면 -- 뒤에 경로를 지정합니다.
# 특정 파일의 커밋 이력
$ git log -- src/pages/profile.js
# 특정 디렉토리의 커밋 이력
$ git log -- src/components/
# 한 줄로 보기
$ git log --oneline -- src/pages/profile.js
-p 옵션과 함께 쓰면 해당 파일의 변경 내용까지 볼 수 있어요.
$ git log -p -- src/pages/profile.js
파일 이름이 변경된 경우에도 변경 전 이력까지 추적하고 싶다면 --follow 옵션을 추가하면 돼요.
$ git log --follow -- src/pages/profile.js
브랜치 간 비교
두 브랜치 사이의 커밋 차이를 확인할 때 .. 표기법을 씁니다.
# main에는 없고 feature에만 있는 커밋
$ git log main..feature --oneline
# feature에는 없고 main에만 있는 커밋
$ git log feature..main --oneline
A..B는 “A에는 없지만 B에는 있는 커밋”을 뜻합니다.
풀 리퀘스트를 올리기 전에 내 브랜치에 어떤 커밋이 들어있는지 확인하거나 머지 후 빠진 커밋이 없는지 점검할 때 유용해요.
세 개의 점(...)을 쓰면 양쪽 브랜치에서 서로 다른 커밋을 모두 보여줍니다.
# 양쪽에서 서로 갈라진 커밋
$ git log main...feature --oneline
Git에서 HEAD란? 글에서 다룬
HEAD~1,HEAD~3같은 상대 참조도 사용할 수 있습니다.
병합 커밋 제외
히스토리에서 병합 커밋을 제외하고 실제 작업 커밋만 보고 싶다면 --no-merges 옵션을 씁니다.
$ git log --no-merges --oneline
반대로 병합 커밋만 보고 싶다면 --merges 옵션을 씁니다.
$ git log --merges --oneline
실전 활용
실제 개발하면서 git log를 쓰는 몇 가지 상황을 소개해볼게요.
코드 리뷰를 할 때 특정 팀원이 최근에 어떤 작업을 했는지 확인할 수 있어요.
$ git log --author="Dale" --since="1 week ago" --oneline --stat
배포 후 문제가 생겼을 때 마지막 배포 이후 변경된 내용을 추적할 수도 있고요.
# 태그를 기준으로 변경 내용 확인
$ git log v1.2.0..HEAD --oneline
특정 함수가 어디서 도입되었는지 찾을 수도 있죠.
# 함수가 추가된 커밋 찾기
$ git log -S "function calculateTotal" --oneline -p
팀의 작업 현황을 한눈에 파악할 때도 쓸 수 있어요.
# 이번 주 작성자별 커밋 수 확인
$ git shortlog --since="1 week ago" -s -n
12 Dale Seo
8 Kim Lee
5 Park Choi
git shortlog는 git log의 출력을 작성자별로 그룹화해서 보여주는 명령어입니다. -s는 커밋 수만 표시하고 -n은 커밋 수가 많은 순으로 정렬해요.
git show와 비교
git log와 git show는 비슷해 보이지만 용도가 다릅니다.
| 특성 | git log | git show |
|---|---|---|
| 기본 대상 | 커밋 히스토리 | 단일 커밋 |
| diff 포함 | 기본 미포함 | 기본 포함 |
| 출력 범위 | 여러 커밋 목록 | 지정한 커밋 하나 |
| 주요 용도 | 히스토리 탐색 | 커밋 상세 확인 |
쉽게 말해 git log로 커밋 히스토리를 훑어보다가 자세히 들여다볼 커밋을 찾으면 git show로 확인하는 흐름이죠.
마치며
git log는 커밋 히스토리를 탐색할 때 가장 먼저 찾게 되는 명령어입니다.
자주 쓰이는 옵션을 정리하면 다음과 같아요.
git log --oneline: 커밋을 한 줄씩 간략하게 보기git log -5: 최근 5개 커밋만 보기git log --stat: 변경된 파일 목록과 통계 함께 보기git log -p: 코드 변경 내용(diff) 함께 보기git log --graph --all: 브랜치 그래프로 보기git log --author="이름": 특정 작성자의 커밋만 보기git log --grep="키워드": 커밋 메시지에서 키워드 검색git log -S "코드": 코드 변경에서 문자열 검색git log -- 파일경로: 특정 파일의 히스토리 보기git log A..B: 두 브랜치 간 커밋 차이 비교
옵션이 많다고 한꺼번에 외울 필요는 없습니다.
--oneline과 --graph부터 시작해서 필요할 때 하나씩 찾아보면 자연스럽게 익숙해질 거예요.
더 자세한 내용은 Git 공식 문서를 참고하세요.
This work is licensed under
CC BY 4.0