모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.

5강 / 전체 7강

변경 확인

7분 읽기 조회 1

git diff로 변경 내용 상세 비교(작업 디렉터리·스테이징·커밋 간), git show로 특정 커밋 내용 확인, git restore로 파일 되돌리기, diff 출력 읽는 방법까지 변경 추적의 모든 것을 익힙니다.

🎯 학습 목표

이 강을 마치면 다음을 할 수 있습니다.

  • git diff 출력을 읽고 어떤 내용이 변경됐는지 파악할 수 있습니다.
  • 작업 디렉터리, 스테이징 영역, 커밋 간의 차이를 각각 비교할 수 있습니다.
  • git show로 특정 커밋의 상세 내용을 확인할 수 있습니다.
  • git restore로 수정한 파일을 이전 상태로 안전하게 되돌릴 수 있습니다.

🔎 git diff — 변경 내용 상세 비교

이 섹션에서는 파일의 어떤 줄이 어떻게 변경됐는지 정확하게 보여주는 git diff를 살펴보겠습니다.

git diff는 "어떤 내용이 바뀌었는가"를 줄 단위로 보여줍니다. 커밋 전에 내가 어떤 변경을 했는지 검토하거나, 두 버전의 차이를 파악할 때 필수적으로 사용합니다.

# 1. 작업 디렉터리의 변경 사항 보기 (스테이징 전 파일들)
git diff

# 2. 스테이징 영역의 변경 사항 보기 (add 후, commit 전)
git diff --staged
# 또는
git diff --cached

# 3. 두 커밋 사이의 차이 비교
git diff a1b2c3d 7890abc

# 4. 특정 파일만 비교
git diff index.html

# 5. 현재와 특정 브랜치 비교
git diff main feature-branch

📖 diff 출력 읽는 방법

이 섹션에서는 git diff의 출력 형식을 이해하고 변경 내용을 정확하게 읽는 방법을 살펴보겠습니다.

git diff 출력이 처음에는 낯설게 느껴질 수 있습니다. 형식을 이해하면 어떤 줄이 추가되고 삭제됐는지 명확하게 파악할 수 있습니다.

# git diff 출력 예시
diff --git a/index.html b/index.html
index 1234567..abcdef0 100644
--- a/index.html       # 변경 전 파일 (a 버전)
+++ b/index.html       # 변경 후 파일 (b 버전)
@@ -10,7 +10,8 @@     # 변경된 위치 (- 이전 10번째 줄부터 7줄, + 새 10번째 줄부터 8줄)
 <div class="container">
-  <h1>이전 제목</h1>      # - (빨간색): 삭제된 줄
+  <h1>새로운 제목</h1>    # + (초록색): 추가된 줄
+  <p>새로 추가된 단락</p>  # + (초록색): 추가된 줄
   <p>기존 내용</p>         # 공백으로 시작: 변경 없음 (맥락 표시용)

출력 읽는 핵심 규칙입니다.

  • -로 시작하는 줄: 삭제된 내용 (빨간색으로 표시됨)
  • +로 시작하는 줄: 추가된 내용 (초록색으로 표시됨)
  • 공백으로 시작하는 줄: 변경 없음, 맥락 파악용으로만 표시
  • @@ 헤더: 변경이 일어난 줄 번호 범위

수정은 "삭제 + 추가"로 표현됩니다. "이전 제목"을 "새로운 제목"으로 바꾸면 -이전 제목 줄이 삭제되고 +새로운 제목 줄이 추가된 것으로 나타납니다.

🔍 git show — 특정 커밋 내용 확인

이 섹션에서는 특정 커밋의 상세 정보와 변경 내용을 조회하는 git show를 살펴보겠습니다.

git show는 특정 커밋의 메타데이터(작성자, 날짜, 메시지)와 변경 내용(diff)을 함께 보여줍니다. "이 커밋이 정확히 무엇을 바꿨는가"를 확인할 때 사용합니다.

# 가장 최근 커밋 보기 (HEAD)
git show

# 특정 커밋 보기 (커밋 해시 앞 7자리)
git show a1b2c3d

# 특정 커밋의 특정 파일 변경만 보기
git show a1b2c3d:index.html

# 특정 커밋 시점의 파일 내용 보기 (diff 아닌 전체 내용)
git show HEAD:index.html

# 출력 예시:
# commit a1b2c3d4e5f6...
# Author: 홍길동 <gildong@example.com>
# Date:   Mon Jan 15 14:30:00 2024 +0900
#
#     feat: 로그인 기능 추가
#
# diff --git a/login.html b/login.html
# ... (이하 변경 내용)

↩️ git restore — 파일 되돌리기

이 섹션에서는 실수로 수정한 파일을 안전하게 이전 상태로 되돌리는 git restore를 살펴보겠습니다.

파일을 수정했다가 "역시 이전이 더 나았어" 하고 되돌리고 싶을 때가 있습니다. git restore는 이럴 때 사용하는 명령어입니다. 상황에 따라 두 가지 용도로 사용합니다.

# 용도 1: 작업 디렉터리의 수정 취소 (마지막 커밋 상태로 되돌리기)
git restore index.html      # index.html의 수정 사항 버리기
git restore .               # 모든 파일 수정 취소

# 용도 2: 스테이징 취소 (add 취소, 파일 내용은 유지)
git restore --staged index.html

# 용도 3: 특정 커밋 시점의 파일로 되돌리기
git restore --source=a1b2c3d index.html

⚠️ 중요한 경고: git restore로 작업 디렉터리의 수정을 취소하면 복구가 불가능합니다. 아직 커밋하지 않은 변경 사항은 Git에 저장돼 있지 않으므로 삭제하면 영원히 사라집니다. 실행 전에 반드시 git status와 git diff로 어떤 내용인지 확인한 뒤 신중하게 사용하세요.

명령어취소 대상복구 가능
git restore 파일 작업 디렉터리의 수정 취소 ❌ 불가능 (신중하게 사용)
git restore --staged 파일 스테이징 취소 (파일 내용 유지) ✅ 가능 (파일 내용은 그대로)

🔬 실전 활용 — 커밋 전 변경 사항 검토 워크플로

이 섹션에서는 커밋 전 변경 내용을 꼼꼼히 검토하는 실전 워크플로를 살펴보겠습니다.

좋은 커밋을 만들기 위한 실전 워크플로입니다. 이 순서를 습관화하면 실수 없는 깔끔한 커밋 히스토리를 유지할 수 있습니다.

# 1. 현재 상태 확인
git status

# 2. 변경 내용 상세 확인 (add 전)
git diff

# 3. 커밋에 포함할 파일 스테이징
git add 파일명

# 4. 스테이징된 내용 재확인
git diff --staged

# 5. 확인 후 커밋
git commit -m "feat: 의미 있는 커밋 메시지"

# 6. 커밋 결과 확인
git log --oneline -3

4단계에서 스테이징된 내용을 한 번 더 확인하는 것이 중요합니다. 원치 않는 변경 사항(디버그 코드, 임시 주석 등)이 섞여 들어가지 않았는지 이 시점에서 최종 검토합니다.

📝 핵심 요약

5강에서 배운 내용을 정리해 보겠습니다.

# 오늘의 핵심 명령어

git diff                # 작업 디렉터리 변경 사항 (스테이징 전)
git diff --staged       # 스테이징된 변경 사항 (커밋 전)
git diff 커밋1 커밋2     # 두 커밋 간 비교
git show                # 최근 커밋 상세 보기
git show 해시값          # 특정 커밋 상세 보기
git restore 파일         # 수정 취소 (⚠️ 복구 불가)
git restore --staged 파일  # 스테이징 취소 (파일 내용 유지)

diff 출력 기호 요약: - 삭제된 줄 | + 추가된 줄 | 공백 변경 없음

다음 강인 6강 — .gitignore에서는 Git이 추적하지 않아야 할 파일들을 관리하는 방법을 배웁니다. 비밀번호가 담긴 환경 변수 파일, 빌드 결과물, OS 임시 파일을 저장소에서 제외하는 것은 보안과 협업 양쪽에서 매우 중요합니다!

관련 주제

  • git diff
  • git diff --staged
  • git show
  • git restore
  • 변경 내용 비교
  • 개발·프로그래밍
  • 개발·프로그래밍 강의
  • 깃허브 사용법 18강 — Git & GitHub 협업
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나

📚 시리즈 전체 공유

깃허브 사용법 18강 — Git & GitHub 협업

이 강의가 속한 시리즈는 총 7강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.

댓글

0/1000

불러오는 중...