BioPlayground

🧬
목록으로

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

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

입문
|
5
|
검증 완료 (2026-07)
진행률0/36 (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 유출과 디버깅 코드 잔류의 원인입니다.