git add 뒤 git diff가 비어 있는 이유와 커밋할 변경 확인하기
by 그릿 | GROWTH_ESSAY | 2026-10-12
#practical-guides #Git #개발git diff --cached
git diff HEAD
git status --shortgit diff는 작업 트리와 인덱스의 차이를 보여줍니다. 파일을 수정한 직후에는 아직 인덱스에 반영되지 않은 내용이 있으므로 변경 내용이 표시됩니다. git add note.txt를 실행하면 현재 파일 내용이 다음 커밋을 위한 인덱스에 담기고, 작업 트리와 인덱스가 같은 상태가 됩니다. 이때 일반 git diff가 비어 있는 것은 확인할 대상이 남아 있지 않기 때문입니다.
왜 이렇게 보이나요
Git에서는 파일 상태를 작업 트리, 인덱스, HEAD라는 세 지점으로 나누어 살펴봅니다. 작업 트리는 지금 파일에 있는 내용이고, 인덱스는 다음 커밋에 넣도록 선택한 내용이며, HEAD는 현재 커밋입니다.
git diff는 작업 트리와 인덱스를 비교합니다. 따라서 수정한 내용을 git add로 올리면 이 비교 결과가 사라집니다. 커밋할 변경은 인덱스와 HEAD 사이에 남아 있으므로 git diff --cached에서 확인할 수 있습니다. git diff --cached는 인덱스와 HEAD를 비교하고, git diff HEAD는 작업 트리 전체를 HEAD와 비교합니다. 두 명령은 기준점이 다르므로 목적에 맞게 선택해야 합니다.
예제의 git status --short 결과인 M note.txt에서 첫째 칸의 M은 인덱스에 수정 내용이 있다는 뜻이고, 둘째 칸의 공백은 작업 트리에 인덱스와 다른 추가 수정이 없다는 뜻입니다. 파일을 다시 고친 뒤에는 작업 트리와 인덱스 사이에 차이가 생기므로 일반 git diff에서 그 수정 내용을 볼 수 있습니다.
어떤 명령으로 확인하나요
새 예제 폴더에서 다음 흐름을 실행하면 각 비교 기준을 순서대로 확인할 수 있습니다.
아래 새 폴더 예제로 각 단계의 실제 출력을 확인할 수 있어요.
처음 git diff에서는 before에서 after로 바뀐 내용이 보입니다. 이어서 git add note.txt를 실행하면 일반 git diff는 비어 있고, git diff --cached에는 커밋 대상으로 선택한 변경이 표시됩니다. git diff HEAD도 현재 작업 트리 전체를 HEAD와 비교하므로 같은 변경을 보여줍니다.
적용 조건과 다음 확인
커밋 전에 무엇을 넣을지 검토하려면 git diff --cached를 먼저 사용하세요. 아직 올리지 않은 수정까지 현재 커밋 기준으로 함께 살펴보려면 git diff HEAD를 사용합니다. 일반 git diff가 비어 있어도 저장소에 확인할 항목이 전부 사라졌다고 판단하지 말고 git status --short를 이어서 실행하세요. 이 명령으로 인덱스에 올라간 수정, 작업 트리의 추가 수정, 추적되지 않은 파일을 함께 확인할 수 있습니다.
새 파일이나 다른 파일의 상태까지 확인하려면 예제처럼 저장소의 상태를 먼저 살피고, 필요한 파일을 git add로 인덱스에 담은 뒤 git diff --cached로 커밋 내용을 검토하세요. 파일을 다시 수정했다면 일반 git diff로 아직 인덱스에 반영되지 않은 부분을 확인하고, 의도한 내용이면 해당 파일에 git add를 다시 실행합니다.
새 폴더에서 직접 확인하기
새 예제 폴더에서 실행하세요. 기존 프로젝트에서 초기화 명령을 실행하지 않습니다.
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
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 version 2.50.1 (Apple Git-155), 2026-10-12
Git 공식 문서에서 명령의 비교 범위를 확인할 수 있어요.