스테이징된 변경에서 실제로 바뀐 단어 확인하기
by 그릿 | GROWTH_ESSAY | 2026-11-03
#practical-guides #Git #개발git diff --cachedgit diff HEADgit status --short
파일을 수정한 뒤 git add를 실행하면 변경 내용이 인덱스에 담깁니다. 이때 일반 git diff는 작업트리와 인덱스를 비교하므로 출력이 비어 있을 수 있습니다. 현재 인덱스에 들어간 변경을 커밋 전에 확인하려면 git diff --cached를 사용하세요.
왜 이렇게 보이나요
git diff는 작업트리와 인덱스의 차이를 보여줍니다. 수정한 파일을 git add note.txt로 스테이징하면 작업트리와 인덱스의 내용이 같아져 일반 diff가 비어 있습니다. 이 결과는 인덱스에 담긴 변경이 사라졌다는 뜻으로 해석하지 않습니다.
git diff --cached는 인덱스와 HEAD를 비교합니다. 따라서 다음 커밋에 포함될 변경을 확인하는 명령입니다. git diff HEAD는 작업트리와 HEAD를 비교하므로, 이미 스테이징한 내용과 아직 작업트리에 남은 내용이 함께 보일 수 있습니다. 두 명령은 비교 대상과 확인 목적이 다릅니다.
예제에서 before를 after로 바꾼 뒤 스테이징하면 git diff --cached에는 한 줄의 변경이 표시됩니다. 마지막에 git diff --cached --word-diff=plain을 실행하면 줄 전체 대신 단어 단위 표기인 [-before-]{+after+} 형태로 바뀐 부분을 읽을 수 있습니다.
어떤 명령으로 확인하나요
커밋할 변경의 전체 내용을 확인할 때는 다음 명령을 사용합니다.
git diff --cached스테이징된 변경에서 단어 수준의 추가·삭제를 보고 싶다면 다음처럼 실행하세요.
git diff --cached --word-diff=plain작업트리에서 인덱스에 아직 담기지 않은 수정까지 마지막 커밋과 비교하려면 다음 명령을 사용합니다.
git diff HEAD파일 상태와 스테이징 여부를 함께 확인할 때는 다음 명령이 간결합니다.
git status --short예제의 M note.txt에서 첫째 칸의 M은 인덱스에 수정 내용이 있다는 표시입니다. 둘째 칸은 작업트리의 상태를 나타냅니다. 둘째 칸이 비어 있으면 현재 작업트리와 인덱스 사이에 추가 수정이 없는 상태로 볼 수 있습니다.
적용 조건과 다음 확인
스테이징 후 파일을 다시 수정하면 인덱스와 작업트리의 내용이 달라집니다. 이때 git diff에는 두 번째 수정 내용이 다시 나타나고, git diff --cached에는 처음 스테이징한 내용이 남습니다. 커밋 예정 내용과 추가 작업을 나누어 살펴볼 수 있는 흐름입니다.
git diff --cached가 비어 있어도 수정이 전혀 없다고 바로 결론 내리기보다 git status --short를 함께 확인하세요. 아직 추적하지 않은 파일은 일반 diff에 표시되지 않을 수 있으며, 상태 목록에서 별도의 표시로 확인할 수 있습니다. 커밋 전에는 git diff --cached --word-diff=plain으로 문구나 값처럼 단어 단위로 바뀐 부분을 읽고, git status --short로 파일별 인덱스 상태를 확인하면 됩니다.
새 폴더에서 직접 확인하기
새 예제 폴더에서 실행하세요. 기존 프로젝트에서 초기화 명령을 실행하지 않습니다.
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 --word-diff=plain실제로 확인한 출력
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 --word-diff=plain
diff --git a/note.txt b/note.txt
index 90be1f3..294186e 100644
--- a/note.txt
+++ b/note.txt
@@ -1 +1 @@
[-before-]{+after+}
예제 확인: git version 2.50.1 (Apple Git-155), 2026-11-03
Git 공식 문서에서 명령의 비교 범위를 확인할 수 있어요.