스테이징된 변경의 추가·삭제 줄 수를 커밋 전에 확인하기
by 그릿 | GROWTH_ESSAY | 2026-10-30
#practical-guides #Git #개발git diff --cached
git diff HEAD
git status --short파일을 git add한 뒤 일반 git diff가 비어 있으면, 작업트리와 인덱스의 차이가 현재 없다는 뜻입니다. 방금 올린 변경이 인덱스에 들어갔기 때문에 일반 diff가 보여 줄 대상이 사라진 상태입니다.
왜 이렇게 보이나요
Git은 파일 상태를 작업트리, 인덱스, 최신 커밋인 HEAD로 나누어 비교합니다. git diff는 작업트리와 인덱스를 비교하므로 아직 스테이징하지 않은 변경을 보여 줍니다. git add를 실행하면 변경이 인덱스에 담기고, 이 비교 결과가 비어 보일 수 있습니다.
커밋할 내용은 git diff --cached로 확인합니다. 이 명령은 인덱스와 HEAD를 비교하므로 다음 커밋에 들어갈 변경을 보여 줍니다. git diff HEAD는 작업트리 전체와 HEAD를 비교합니다. 이미 스테이징된 변경과 아직 작업트리에만 남은 변경을 함께 살필 때 알맞습니다.
예제에서 git add 뒤 git diff는 빈 결과를 내고, git diff --cached와 git diff HEAD는 before에서 after로 바뀐 내용을 보여 줍니다.
어떤 명령으로 추가·삭제 줄을 확인하나요
커밋 전에 파일별 줄 수가 필요하면 다음 명령을 사용합니다.
git diff --cached --numstat--numstat은 파일마다 추가된 줄 수, 삭제된 줄 수, 경로를 숫자 형태로 표시합니다. 예제의 1 1 note.txt는 note.txt에서 한 줄이 추가되고 한 줄이 삭제된 상태를 뜻합니다. 긴 패치보다 변경량을 빠르게 확인하거나 후속 도구에서 읽기 쉬운 형식이 필요할 때 유용합니다.
바이너리 파일은 줄 단위로 셀 수 없으므로 --numstat에서 추가·삭제 수 대신 두 개의 -로 표시됩니다.
적용 조건과 다음 확인
스테이징된 변경만 살피려면 git diff --cached --numstat를 실행합니다. 파일을 git add한 뒤 다시 수정했다면, 새로 수정한 부분은 작업트리에 남아 일반 git diff에 다시 나타납니다. 이때 git diff --cached --numstat로 인덱스에 담긴 커밋 예정 변경을 확인하고, git diff HEAD로 커밋 예정 변경과 추가 수정분을 합친 전체 차이를 확인합니다.
git status --short도 함께 실행하면 상태를 짧게 확인할 수 있습니다. 예제의 M note.txt에서 첫째 칸의 M은 인덱스에 스테이징된 수정이고, 둘째 칸은 작업트리에만 남은 수정 여부를 나타냅니다. 새 파일처럼 아직 추적되지 않은 항목은 git status --short에서 확인할 수 있으므로, cached 결과가 비어 있을 때도 상태를 함께 살펴야 합니다.
새 폴더에서 직접 확인하기
새 예제 폴더에서 실행하세요. 기존 프로젝트에서 초기화 명령을 실행하지 않습니다.
mkdir git-diff-example
cd git-diff-example
git init -q
printf 'before\n' > note.txt
git add note.txt
git -c user.name=Example -c user.email=example@example.invalid -c commit.gpgsign=false commit -qm initial
printf 'after\n' > note.txt
git diff
git add note.txt
git diff
git diff --cached
git diff HEAD
git status --short
git diff --cached --numstat실제로 확인한 출력
git diff
diff --git a/note.txt b/note.txt
index 90be1f3..294186e 100644
--- a/note.txt
+++ b/note.txt
@@ -1 +1 @@
-before
+after
git diff
(출력 없음)git diff --cached
diff --git a/note.txt b/note.txt
index 90be1f3..294186e 100644
--- a/note.txt
+++ b/note.txt
@@ -1 +1 @@
-before
+after
git diff HEAD
diff --git a/note.txt b/note.txt
index 90be1f3..294186e 100644
--- a/note.txt
+++ b/note.txt
@@ -1 +1 @@
-before
+after
git status --short
M note.txt
git diff --cached --numstat
1 1 note.txt
예제 확인: git version 2.50.1 (Apple Git-155), 2026-10-30
Git 공식 문서에서 명령의 비교 범위를 확인할 수 있어요.