목록으로

Git Diff — 커밋 전에 반드시 확인하는 습관

git diff 명령어로 커밋 전에 변경사항을 확인하는 방법과 실수를 방지하는 습관을 알아봅니다.

입문
|
5분
|
검증 완료 (2026-07)
진행률0/48 (0%)

Git Diff — 커밋 전에 반드시 확인하는 습관

이 토픽을 마치면

git diff로 변경사항을 확인하는 습관이 왜 중요한지, 그리고 어떤 옵션이 어떤 상태를 보여주는지 구분할 수 있게 됩니다.


커밋하고 나서 "어?" 하는 순간

코드를 고치고 git add . → git commit 했습니다. 그런데 push하고 나서 보니 디버깅용 console.log가 3개 남아 있었습니다. .env 파일도 같이 올라갔습니다. API 키가 GitHub에 공개됐습니다.

이런 사고의 공통점은 커밋 전에 뭘 올리는지 확인하지 않았다는 겁니다. git diff는 이 확인을 해주는 명령어입니다.


git diff — 아직 스테이징 안 된 변경사항

bash
git diff

이 명령어는 작업 디렉토리에서 수정했지만 아직 git add하지 않은 변경사항을 보여줍니다.

diff
- const API_URL = "https://api.example.com";
+ const API_URL = "https://api.production.com";

빨간색 -줄은 이전 내용, 초록색 +줄은 새로운 내용입니다. 어떤 파일에서 어떤 줄이 바뀌었는지 한눈에 보입니다.


git diff --staged — 스테이징된 변경사항

bash
git diff --staged

git add로 스테이징한 변경사항만 보여줍니다. 지금 커밋하면 정확히 뭐가 들어가는지 확인하는 명령어입니다.

이걸 이해하려면 Git의 3가지 영역을 알아야 합니다:

text
작업 디렉토리  →  스테이징 영역  →  커밋 기록
    (수정)       (git add)      (git commit)

git diff       git diff --staged
 ↑ 여기          ↑ 여기

git diff는 작업 디렉토리 ↔ 스테이징 사이를 보고, git diff --staged는 스테이징 ↔ 마지막 커밋 사이를 봅니다.


커밋 간 비교

특정 커밋끼리 비교도 됩니다:

bash
git diff HEAD~3..HEAD

최근 3개 커밋에서 뭐가 바뀌었는지 전체를 보여줍니다.

bash
git diff main..feature-branch

main 브랜치와 feature-branch 사이의 차이를 보여줍니다. PR(Pull Request)을 올리기 전에 이걸로 확인하면 리뷰어가 볼 내용을 미리 점검할 수 있습니다.


파일 단위로 보기

전체 diff가 너무 길면 특정 파일만 볼 수 있습니다:

bash
git diff src/api/handler.js
git diff --staged package.json

--stat 옵션을 붙이면 어떤 파일이 바뀌었는지 요약만 보여줍니다:

bash
git diff --stat
text
src/api/handler.js    | 12 ++++++------
 src/utils/format.js   |  3 ++-
 package.json          |  1 +
 3 files changed, 9 insertions(+), 7 deletions(-)

파일 목록과 변경 규모를 빠르게 파악할 수 있습니다. 전체를 다 읽기 전에 이걸로 범위부터 확인하는 게 좋습니다.


실무 습관: 커밋 전 3단계

숙련된 개발자들은 커밋 전에 이 순서를 밟습니다:

bash
git status # 1. 어떤 파일이 바뀌었는지 확인
git diff # 2. 스테이징 전 변경사항 확인
git add <파일들> # 3. 필요한 것만 선택적으로 스테이징
git diff --staged # 4. 커밋에 들어갈 내용 최종 확인
git commit # 5. 커밋

git add .로 전부 올리는 게 아니라 파일을 하나씩 확인하면서 올리는 것이 핵심입니다. 디버깅 코드, 테스트용 하드코딩 값, .env 같은 민감한 파일이 실수로 포함되는 걸 막을 수 있습니다.


GUI 도구의 diff

VS Code의 Source Control 패널, GitKraken, GitHub Desktop 같은 GUI 도구들도 내부적으로 git diff를 실행합니다. 화면에서 변경사항을 색상으로 보여주고, 줄 단위로 스테이징/언스테이징할 수 있습니다.

어떤 도구를 쓰든 원리는 같습니다: 커밋하기 전에 무엇이 들어가는지 눈으로 확인하는 것.


핵심

git diff는 커밋 전에 변경사항을 확인하는 명령어입니다. git diff는 미스테이징 변경, git diff --staged는 스테이징된 변경을 보여줍니다. "확인 없이 커밋"하는 습관이 .env 유출과 디버깅 코드 잔류의 원인입니다.

💬 질문과 댓글

0개의 댓글

로그인 없이 작성할 수 있습니다. 비로그인 댓글은 작성 후 직접 수정·삭제할 수 없습니다.

0/2000

로딩 중...