📝 Git diff 완전 정복 가이드
Git을 처음 쓰는 사람도 이해할 수 있도록 git diff의 기본 개념부터 커밋·브랜치 비교까지 한 번에 정리한 가이드입니다.
Git을 처음 접하면 가장 많이 헷갈리는 명령어 중 하나가 바로 git diff입니다. 커밋끼리 비교하고, 브랜치끼리 비교하고, 내가 지금 수정한 내용도 보고… 할 수 있는 건 많은데 막상 쓰려면 “언제 어떤 diff를 써야 하지?” 싶을 때가 많죠.
이 글에서는 Git diff의 기본 개념부터 commit/branch 비교까지, 깃 입문자도 바로 따라 할 수 있도록 하나씩 차근차근 설명합니다.
1. Git diff란 무엇인가?
git diff는 말 그대로 두 상태의 차이(diff, difference)를 보여주는 명령어입니다.
“앞 상태”와 “지금 상태”가 어떻게 달라졌는지 줄 단위로 비교해서 보여줍니다.
보통 다음 세 가지 종류의 상태를 비교합니다.
- 현재 작업 중인 파일 (워킹 디렉토리)
git add로 올려 둔 영역 (스테이지 / index)- 저장된 스냅샷들 (커밋) 또는 브랜치
Git diff는 “명령어가 어렵다”기보다는
어떤 상태와 어떤 상태를 비교하는가만 이해하면 됩니다.
2. 가장 기본적인 Git diff — “지금 수정한 내용 보기”
👉 스테이지에 올리지 않은 수정 내용 확인
git diff
비교 대상
- 워킹 디렉토리 vs 스테이지(index)
즉, “파일을 수정했는데 아직 git add는 안 한 부분”이
어떤 차이가 있는지 보여줍니다.
예를 들어:
a.py를 수정만 하고git diff실행 → 변경된 줄이 표시됨git add a.py를 한 뒤git diff실행 → 더 이상 안 보임 (스테이지로 올라가서)
3. 스테이지에 올린 내용의 변경 확인
한 번 git add를 하면, 그 변경은 이미 “스테이지”로 올라갔기 때문에
그냥 git diff만 치면 보이지 않습니다. 이때는 다음 명령을 사용합니다.
👉 스테이지에 올린 변경 내용 확인
git diff --staged
또는 동일한 명령:
git diff --cached
비교 대상
- 스테이지(index) vs 마지막 커밋
즉, “지금 커밋하면 어떤 내용이 들어가는지”를 확인할 때 쓰는 명령입니다. 커밋하기 전에 반드시 한 번 확인하는 습관을 들이면 좋아요.
4. 특정 파일만 비교하기
수정된 파일이 여러 개 있으면, 특정 파일만 골라서 diff를 보고 싶을 때도 있습니다. 이럴 땐 파일 이름을 뒤에 붙여 주면 됩니다.
git diff a.py
스테이지에 올라간 내용 중 특정 파일만 보려면 이렇게:
git diff --staged a.py
5. Git diff commit — 커밋끼리 비교하기
이번에는 “지금 수정 중인 내용”이 아니라, 저장된 커밋들끼리 비교하는 방법입니다. 특정 시점 두 개를 찍어서 “이 사이에 뭐가 달라졌지?”를 보는 용도죠.
기본 형식은 다음과 같습니다.
git diff <commit1> <commit2>
예시:
git diff 1234abcd 7890efgh
비교 대상
commit1과commit2의 코드 차이
✔️ 직전 커밋과 비교
“바로 이전 커밋과 지금 HEAD를 비교하고 싶다”면:
git diff HEAD~1 HEAD
또는 조금 더 짧게:
git diff HEAD~1
인자를 하나만 쓰면 HEAD~1과 현재 워킹 디렉토리 상태를 기준으로 비교하지만,
보통은 “직전 커밋 vs 현재 상태”를 보는 느낌으로 사용합니다.
✔️ 특정 커밋과 현재 작업 상태 비교
어떤 특정 커밋과 지금 상태를 비교하고 싶다면:
git diff <commit> HEAD
예를 들어 “배포했던 버전 커밋”과 지금 로컬 브랜치를 비교하는 식으로 많이 사용합니다.
6. Git diff branch — 브랜치끼리 비교하기
실제 협업에서는 브랜치를 여러 개 쓰게 됩니다. 이때 “main과 내 브랜치가 얼마나 다른지”를 보고 싶을 때가 많죠.
브랜치 간 비교의 기본 형식은 다음과 같습니다.
git diff branch1 branch2
예시:
git diff main feature/login
확인할 수 있는 것:
- 각 브랜치의 HEAD 기준으로 어떤 파일이 추가 / 삭제 / 수정되었는지
- PR 생성 전에 “무엇이 얼마나 바뀌었는지”를 한 번에 확인
원격 브랜치와 비교하는 것도 가능합니다.
git diff origin/main develop
→ 원격 main과 로컬 develop 브랜치의 차이 비교
7. Git diff에서 자주 쓰는 옵션
✔️ 변경된 파일 목록만 보고 싶을 때
git diff --name-only
“내용까지는 필요 없고, 어떤 파일이 바뀌었는지만 알고 싶다”는 경우에 사용합니다.
✔️ 줄 번호까지 보기
git diff --unified
줄 번호와 함께 더 넉넉한 컨텍스트를 보고 싶을 때 사용할 수 있는 옵션입니다.
✔️ 단어 단위로 비교
git diff --word-diff
보통은 줄 단위로 diff를 보여주는데, 이 옵션을 쓰면 줄 안에서 어느 단어가 바뀌었는지 좀 더 세밀하게 확인할 수 있습니다.
✔️ 색깔 강조 출력 (컬러 diff)
대부분의 Git은 기본적으로 컬러 diff를 켜두지만, 혹시 색상이 안 나올 때는 아래처럼 설정할 수 있습니다.
git config --global color.ui auto
8. Git diff 시각적으로 보기 (GUI 도구)
터미널이 아직 어색하거나, 복잡한 변경 사항을 눈으로 한 번에 보고 싶다면 GUI 도구를 함께 사용하는 것도 방법입니다.
기본적으로 Git에는 difftool이라는 기능이 있습니다.
git difftool
VSCode를 사용한다면 직접 파일 두 개를 비교할 수도 있습니다.
code --diff file1 file2
그 외에도 다음과 같은 GUI 클라이언트들이 많이 사용됩니다.
- GitKraken
- SourceTree
- Fork, Git Extensions 등
터미널 기반 diff에 익숙해지면 가장 강력하지만,
초반에는 GUI 도구와 함께 병행해서 보는 것도 충분히 괜찮은 학습 방법입니다.
9. 한눈에 보는 요약
| 목적 | 명령어 | 설명 |
|---|---|---|
| 수정된 내용 확인 | git diff |
워킹 디렉토리 ↔ 스테이지 차이 |
| 스테이지 내용 확인 | git diff --staged |
스테이지 ↔ 마지막 커밋 |
| 특정 파일만 보기 | git diff a.py |
지정한 파일의 변경점만 확인 |
| 커밋끼리 비교 | git diff A B |
커밋 A와 B 사이의 차이 |
| 브랜치끼리 비교 | git diff main develop |
브랜치 간 코드 차이 확인 |
| 파일 목록만 보기 | git diff --name-only |
어떤 파일이 바뀌었는지만 확인 |
🔚 마무리
git diff는 Git을 쓸 때 거의 필수적으로 익혀야 하는 명령이지만,
사실 “어떤 상태와 어떤 상태를 비교하느냐”만 이해하면 매우 단순합니다.
처음에는 아래 세 개만 기억해도 충분합니다.
git diff→ 수정했지만add안 한 내용 보기git diff --staged→add후 커밋 전 상태 확인git diff commit1 commit2/git diff branch1 branch2→ 커밋·브랜치 비교
이 세 가지만 손에 익으면, 나머지 diff 응용들은 자연스럽게 따라올 거예요.
'프로그래밍 > Git' 카테고리의 다른 글
| [Git 명렁어] git branch 및 git checkout 브랜치 관리 (0) | 2025.12.11 |
|---|---|
| [Git 명령어] git fetch와 git pull에 대해 알아보자 (0) | 2025.12.11 |
| [Git 명령어] git add, git commit, git push 완벽 이해하기 (0) | 2025.12.11 |
| [Git 명령어] git stash 완전 정복하기 (apply, drop) (0) | 2025.12.11 |
| [Git 명령어] git reset와 git revert 차이 바로 알기 (0) | 2025.12.11 |