커밋 직전에 변경 파일 이름과 상태만 확인하기
by 그릿 | GROWTH_ESSAY | 2026-10-27
#practical-guides #Git #개발git diff --cached --name-status
git diff HEAD
git status --short커밋 직전에는 파일 내용 전체보다 어떤 파일이 어떤 상태로 올라갈 예정인지 빠르게 확인할 때가 있습니다. 이때 git diff --cached --name-status는 인덱스에 담긴 변경의 상태 문자와 파일 이름만 보여 줍니다. 예제에서는 M note.txt가 출력되며, M은 수정된 파일이라는 뜻입니다.
왜 이렇게 보이나요
Git은 작업 중인 파일, 다음 커밋을 위해 준비한 인덱스, 최근 커밋을 각각 비교할 수 있습니다. git add note.txt를 실행하면 현재 파일의 변경이 인덱스에 담깁니다. 그래서 바로 뒤의 git diff는 작업트리와 인덱스 사이에 남은 차이를 보여 주며, 예제에서는 출력이 비어 있습니다.
커밋할 내용 자체는 인덱스와 HEAD의 비교로 확인합니다. git diff --cached가 이 역할을 하며, --cached는 다음 커밋을 위해 준비한 변경을 뜻합니다. 파일 이름과 상태만 필요할 때 여기에 --name-status를 붙입니다.
git diff HEAD는 작업트리와 HEAD를 비교합니다. 인덱스에 담긴 변경과 아직 담기지 않은 변경을 함께 살펴볼 때 쓰는 별도 목적의 명령입니다. 예제에서는 두 비교가 모두 note.txt의 before에서 after로 바뀐 내용을 보여 줍니다.
어떤 명령으로 확인하나요
커밋 예정 파일의 이름과 상태만 확인하려면 다음 명령을 사용합니다.
git diff --cached --name-status상태 문자는 파일의 변경 종류를 간단히 나타냅니다. 예제의 M은 수정이며, 탭 뒤에 파일 이름이 이어집니다. 전체 변경 내용을 읽고 싶으면 git diff --cached를 실행합니다.
작업트리와 최근 커밋 사이의 전체 차이를 확인하려면 다음 명령을 사용합니다.
git diff HEAD인덱스와 작업트리의 상태를 함께 확인하려면 다음 명령이 유용합니다.
git status --short예제의 M note.txt에서 첫째 칸의 M은 인덱스에 담긴 수정 상태이고, 둘째 칸은 작업트리의 수정 상태입니다. 첫째 칸과 둘째 칸을 따로 읽으면 현재 변경이 커밋 준비 단계에 있는지, 파일을 다시 고친 뒤 작업트리에 추가 차이가 생겼는지 파악할 수 있습니다.
적용 조건과 다음 확인
git diff --cached가 비어 있으면 인덱스와 HEAD 사이에서 표시할 staged 변경이 없다는 뜻입니다. 이 결과만으로 작업 전체에 수정이 없다고 판단하지 말고 git diff로 인덱스에 아직 담기지 않은 변경을 확인하세요. 새 파일처럼 추적되지 않는 항목은 git status --short에서 확인할 수 있습니다.
파일을 git add한 뒤 다시 수정하면 그 후속 수정은 작업트리와 인덱스 사이에 남습니다. 이때 git diff에 다시 차이가 나타나고, 처음 인덱스에 담은 내용은 git diff --cached에서 계속 확인됩니다. 커밋 직전에는 git status --short로 두 칸의 상태를 살핀 뒤, git diff --cached --name-status로 실제 커밋 대상 파일 이름과 상태를 마무리 확인하면 됩니다.
새 폴더에서 직접 확인하기
새 예제 폴더에서 실행하세요. 기존 프로젝트에서 초기화 명령을 실행하지 않습니다.
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 --name-status실제로 확인한 출력
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 --name-status
M note.txt
예제 확인: git version 2.50.1 (Apple Git-155), 2026-10-27
Git 공식 문서에서 명령의 비교 범위를 확인할 수 있어요.