git log 사용법

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 shortloggit log의 출력을 작성자별로 그룹화해서 보여주는 명령어입니다. -s는 커밋 수만 표시하고 -n은 커밋 수가 많은 순으로 정렬해요.

git show와 비교

git loggit show는 비슷해 보이지만 용도가 다릅니다.

특성git loggit 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 CC BY

Discord