git show 사용법
Git으로 작업하다 보면 “이 커밋에서 뭘 변경했더라?” 하고 궁금해지는 순간이 많습니다. git log로 커밋 목록은 볼 수 있지만 각 커밋의 실제 변경 내용까지 바로 확인하기는 어렵죠.
바로 이럴 때 git show가 유용합니다.
git show는 커밋의 메타 정보와 변경 내용을 한 번에 보여주는 명령어인데요.
커밋뿐만 아니라 태그나 브랜치, 특정 파일까지 다양한 Git 객체의 내용을 살펴볼 수 있습니다.
이번 글에서는 git show의 기본 사용법부터 실전에서 유용한 팁까지 함께 알아보겠습니다.
기본 사용법
git show를 인자 없이 실행하면 가장 최근 커밋의 정보를 보여줍니다.
$ git show
commit a80b4e5f987e666cd6473fae575fd0dd34967007 (HEAD -> main)
Author: Dale Seo <dale@example.com>
Date: Thu Feb 13 10:30:00 2026 +0900
사용자 프로필 페이지 추가
diff --git a/src/pages/profile.js b/src/pages/profile.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/profile.js
@@ -0,0 +1,25 @@
+export default function Profile() {
+ return <div>프로필 페이지</div>;
+}
출력 내용을 보면 크게 두 부분으로 나뉩니다. 상단에는 커밋 해시, 작성자, 날짜, 커밋 메시지 같은 메타 정보가 나오고 하단에는 변경된 파일의 diff가 표시되죠.
특정 커밋 조회
특정 커밋의 정보를 보려면 커밋 해시를 인자로 넘기면 됩니다.
$ git show a1b2c3d
커밋 해시 전체를 입력할 필요 없이 앞의 7자리 정도만 입력해도 충분합니다. Git이 알아서 찾아주거든요.
HEAD를 기준으로 상대적인 위치로 커밋을 참조할 수도 있습니다.
# 바로 이전 커밋
$ git show HEAD~1
# 3개 전 커밋
$ git show HEAD~3
커밋 메시지만 보기
때로는 diff 없이 커밋 메시지만 빠르게 확인하고 싶을 때가 있습니다.
--no-patch 옵션이나 줄여서 -s를 쓰면 diff 출력을 생략할 수 있어요.
$ git show -s
commit a80b4e5f987e666cd6473fae575fd0dd34967007 (HEAD -> main)
Author: Dale Seo <dale@example.com>
Date: Thu Feb 13 10:30:00 2026 +0900
사용자 프로필 페이지 추가
--oneline과 함께 쓰면 커밋 해시와 제목만 한 줄로 표시됩니다.
$ git show -s --oneline
a80b4e5 (HEAD -> main) 사용자 프로필 페이지 추가
변경된 파일 목록만 보기
커밋에서 어떤 파일이 변경되었는지만 알고 싶다면 --stat 옵션을 씁니다.
$ git show --stat
commit a80b4e5f987e666cd6473fae575fd0dd34967007 (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(-)
파일별 추가/삭제 줄 수가 막대그래프 형태로 나와서 변경 규모를 한눈에 볼 수 있어요.
파일 이름만 깔끔하게 보고 싶다면 --name-only 옵션을 쓰면 됩니다.
$ git show --name-only
commit a80b4e5f987e666cd6473fae575fd0dd34967007 (HEAD -> main)
Author: Dale Seo <dale@example.com>
Date: Thu Feb 13 10:30:00 2026 +0900
사용자 프로필 페이지 추가
src/pages/profile.js
src/styles/profile.css
src/components/Nav.jsx
파일의 변경 상태(추가, 수정, 삭제)까지 함께 보려면 --name-status를 씁니다.
$ git show --name-status
commit a80b4e5f987e666cd6473fae575fd0dd34967007 (HEAD -> main)
Author: Dale Seo <dale@example.com>
Date: Thu Feb 13 10:30:00 2026 +0900
사용자 프로필 페이지 추가
A src/pages/profile.js
A src/styles/profile.css
M src/components/Nav.jsx
A는 새로 추가된 파일, M은 수정된 파일, D는 삭제된 파일을 뜻합니다.
특정 파일의 변경 내용만 보기
커밋에서 변경된 파일이 많으면 전체 diff에서 원하는 부분을 찾기가 번거롭습니다.
이럴 때 -- 뒤에 파일 경로를 지정하면 그 파일의 변경 내용만 볼 수 있어요.
$ git show -- src/pages/profile.js
여러 파일을 지정할 수도 있습니다.
$ git show -- src/pages/profile.js src/components/Nav.jsx
특정 커밋의 특정 파일만 보고 싶다면 커밋 해시와 파일 경로를 함께 넘기면 되고요.
$ git show a1b2c3d -- src/pages/profile.js
특정 파일의 전체 내용 보기
diff가 아니라 특정 커밋 시점의 파일 전체 내용을 보고 싶을 때도 있죠?
커밋:파일경로 형식을 쓰면 됩니다.
$ git show HEAD:src/pages/profile.js
export default function Profile() {
return <div>프로필 페이지</div>;
}
이 커밋 시점의 파일 내용을 그대로 출력해주는 문법인데요. 과거 특정 시점에 파일이 어떤 상태였는지 확인하거나 이전 버전의 코드를 참고할 때 유용합니다.
다른 브랜치에 있는 파일도 같은 방식으로 볼 수 있어요.
# main 브랜치의 설정 파일 확인
$ git show main:package.json
# 3개 전 커밋의 파일 내용 확인
$ git show HEAD~3:src/app.js
과거 커밋으로 직접 이동하려면 git checkout이나 git switch —detach 명령어를 사용할 수도 있습니다.
출력 형식 지정
--format 옵션으로 커밋 정보의 출력 형식을 자유롭게 바꿀 수 있습니다.
# 커밋 해시와 제목만 표시
$ git show -s --format="%h %s"
a80b4e5 사용자 프로필 페이지 추가
# 작성자와 날짜 포함
$ git show -s --format="%h | %an | %ar | %s"
a80b4e5 | Dale Seo | 2 hours ago | 사용자 프로필 페이지 추가
자주 쓰이는 형식 지정자를 정리하면 다음과 같습니다.
| 지정자 | 설명 |
|---|---|
%H | 전체 커밋 해시 |
%h | 짧은 커밋 해시 |
%an | 작성자 이름 |
%ae | 작성자 이메일 |
%ar | 작성 일시 (상대적) |
%ad | 작성 일시 (절대적) |
%s | 커밋 제목 (첫 줄) |
%b | 커밋 본문 |
태그 조회
git show는 커밋 말고도 태그 정보를 확인할 때도 쓸 수 있습니다.
가벼운 태그(lightweight tag)는 커밋 정보가 바로 표시됩니다.
$ git show v1.0.0
commit a1b2c3d...
Author: Dale Seo <dale@example.com>
Date: Mon Jan 1 09:00:00 2026 +0900
첫 번째 릴리스
...
주석이 달린 태그(annotated tag)는 태그 자체의 정보도 함께 나오죠.
$ git show v2.0.0
tag v2.0.0
Tagger: Dale Seo <dale@example.com>
Date: Sat Feb 1 14:00:00 2026 +0900
두 번째 메이저 릴리스
- 새로운 검색 기능 추가
- 성능 개선
commit b2c3d4e...
Author: Dale Seo <dale@example.com>
Date: Sat Feb 1 13:00:00 2026 +0900
Release v2.0.0
...
태그 메시지만 보고 싶으면 -s 옵션을 쓰면 됩니다.
$ git show -s v2.0.0
병합 커밋 조회
병합 커밋(merge commit)은 부모가 두 개라서 기본적으로 diff가 표시되지 않습니다.
$ git show --stat <병합-커밋>
commit m7e8f9a...
Merge: f4e5d6c a1b2c3d
Author: Dale Seo <dale@example.com>
Date: Thu Feb 13 11:00:00 2026 +0900
Merge branch 'feature/search' into main
병합 커밋의 diff를 보려면 -m 옵션을 씁니다.
각 부모 커밋과의 차이를 따로 보여주거든요.
$ git show -m <병합-커밋>
첫 번째 부모(병합을 실행한 브랜치) 기준으로만 보고 싶다면 --first-parent를 같이 쓰면 돼요.
$ git show -m --first-parent <병합-커밋>
병합 커밋에서 각 부모를 참조하는
HEAD^1,HEAD^2표현식에 대해서는 Git에서 HEAD란? 포스팅에서 자세히 다루고 있으니 참고 바랍니다.
실전 활용
실제 개발하면서 git show를 쓰는 몇 가지 상황을 소개해볼게요.
동료의 최신 커밋을 리뷰할 때 git show로 변경 내용을 빠르게 확인할 수 있어요.
# 원격 브랜치의 최신 커밋 가져오기
$ git fetch origin
# 그 브랜치의 최신 커밋 확인
$ git show origin/feature/payment
프로덕션에 배포된 태그의 내용을 확인할 때도 유용하죠.
# 최근 릴리스 태그의 커밋 확인
$ git show v3.1.0 -s --format="%h %s (%ar)"
c4d5e6f 결제 모듈 버그 수정 (3 days ago)
현재 브랜치와 다른 브랜치의 설정 파일을 비교할 때도 쓸 수 있어요.
# main 브랜치의 설정 파일 내용 확인
$ git show main:config/production.json
# 이전 커밋의 설정 파일과 현재 파일 비교
$ git show HEAD~5:config/production.json > /tmp/old-config.json
$ diff /tmp/old-config.json config/production.json
실수로 파일을 삭제한 후 커밋했더라도 이전 커밋에서 파일 내용을 복구할 수 있어요.
# 삭제 전 커밋에서 파일 내용 확인
$ git show HEAD~1:src/utils/helpers.js
# 파일 복구 (리다이렉션으로 저장)
$ git show HEAD~1:src/utils/helpers.js > src/utils/helpers.js
파일 복원에는 git restore 명령어를 쓰는 게 더 안전합니다.
git log와 비교
git show와 git log는 비슷해 보이지만 용도가 다릅니다.
| 특성 | git show | git log |
|---|---|---|
| 기본 대상 | 단일 커밋 | 커밋 히스토리 |
| diff 포함 | 기본 포함 | 기본 미포함 |
| 출력 범위 | 지정한 커밋 하나 | 여러 커밋 목록 |
| 주요 용도 | 커밋 상세 확인 | 히스토리 탐색 |
쉽게 말해, 커밋 히스토리를 훑어볼 때는 git log를, 특정 커밋을 자세히 들여다볼 때는 git show를 쓰면 됩니다.
마치며
git show는 Git 객체의 내용을 확인할 때 가장 직관적인 명령어입니다.
자주 쓰이는 옵션을 정리하면 다음과 같아요.
git show: 최신 커밋의 메타 정보와 diff 확인git show <커밋>: 특정 커밋의 상세 내용 확인git show -s: 커밋 메시지만 확인 (diff 생략)git show --stat: 변경된 파일 목록과 통계 확인git show <커밋>:<파일>: 특정 시점의 파일 전체 내용 확인git show <태그>: 태그 정보와 관련 커밋 확인
git log로 커밋을 찾고 git show로 자세히 들여다보는 흐름을 익혀두면 코드 리뷰나 디버깅할 때 많이 편해질 겁니다.
더 자세한 내용은 Git 공식 문서를 참고하세요.
This work is licensed under
CC BY 4.0