포스트

[GitHub 100일 챌린지] Day 61 - Git Reset 개념 이해

[GitHub 100일 챌린지] Day 61 - Git Reset 개념 이해

100일 챌린지 Day 61 - Git Reset은 커밋을 되돌리는 강력한 명령어입니다. 세 가지 옵션의 차이를 정확히 이해해야 안전하게 사용할 수 있습니다.

배울 내용

  1. Git Reset의 개념과 동작 원리
  2. Soft, Mixed, Hard 세 가지 옵션
  3. Reset 사용 시 주의사항

1. Git Reset이란?

정의: HEAD와 브랜치를 특정 커밋으로 이동시키는 명령어

gitGraph
    commit id: "A"
    commit id: "B"
    commit id: "C" tag: "HEAD"
    commit id: "D (실수)"
    commit id: "E (실수)"
1
2
git reset --hard C
# D, E 커밋 제거

2. 세 가지 Reset 옵션

–soft (부드럽게)

1
git reset --soft HEAD~1

동작:

  • ✅ HEAD 이동
  • ✅ 커밋 취소
  • ⚠️ Staging Area 유지
  • ⚠️ Working Directory 유지

사용 시점: 커밋 메시지만 수정하고 싶을 때


–mixed (기본값)

1
2
3
git reset HEAD~1
# 또는
git reset --mixed HEAD~1

동작:

  • ✅ HEAD 이동
  • ✅ 커밋 취소
  • ✅ Staging Area 초기화
  • ⚠️ Working Directory 유지

사용 시점: 커밋과 스테이징을 취소하고 다시 선택하고 싶을 때


–hard (강력하게)

1
git reset --hard HEAD~1

동작:

  • ✅ HEAD 이동
  • ✅ 커밋 취소
  • ✅ Staging Area 초기화
  • ✅ Working Directory 초기화

⚠️ 경고: 작업 내용이 완전히 사라집니다!


3. 옵션별 비교

옵션 커밋 Staging Working Dir
–soft 취소 유지 유지
–mixed 취소 초기화 유지
–hard 취소 초기화 초기화

4. 실습 예시

Soft Reset

1
2
3
4
5
6
7
8
# 상황: 커밋 메시지 오타
git commit -m "feat: Ad new feature"  # 오타!

# Soft reset
git reset --soft HEAD~1

# 다시 커밋
git commit -m "feat: Add new feature"  # 수정!

Mixed Reset

1
2
3
4
5
6
7
8
9
10
# 상황: 잘못된 파일도 함께 커밋
git add .
git commit -m "feat: Add feature"

# Mixed reset
git reset HEAD~1

# 다시 선택
git add src/feature.js  # 필요한 파일만
git commit -m "feat: Add feature"

Hard Reset

1
2
3
4
# 상황: 최근 3개 커밋 모두 삭제
git reset --hard HEAD~3

# ⚠️ 주의: 복구 불가능!

5. HEAD~ 표기법

1
2
3
4
5
6
7
HEAD      # 현재 커밋
HEAD~1    # 1개 이전 커밋 (HEAD^)
HEAD~2    # 2개 이전
HEAD~3    # 3개 이전

# 또는 커밋 해시 사용
git reset --soft abc1234

6. 안전 장치

확인 후 Reset

1
2
3
4
5
6
7
8
# 1. 로그 확인
git log --oneline -5

# 2. 어디로 돌아갈지 확인
git show HEAD~2

# 3. Reset 실행
git reset --soft HEAD~2

백업 브랜치

1
2
3
4
5
6
7
8
# Reset 전 백업
git branch backup-before-reset

# Reset 실행
git reset --hard HEAD~3

# 실수했다면?
git checkout backup-before-reset

7. Reset vs Revert

특징 Reset Revert
히스토리 삭제 유지
공유된 커밋 ❌ 위험 ✅ 안전
용도 로컬 작업 공유 브랜치
1
2
3
4
5
# Reset: 커밋 삭제
git reset --hard HEAD~1

# Revert: 새 커밋으로 되돌림
git revert HEAD

정리

완료 체크:

  • Reset의 세 가지 옵션을 설명할 수 있다
  • 옵션별 차이를 이해했다
  • Reset 사용 시 주의사항을 숙지했다

핵심 요약:

  • Soft: 커밋만 취소
  • Mixed: 커밋 + Staging 취소
  • Hard: 모든 변경사항 삭제
  • 공유된 커밋은 Reset 금지!

다음: Day 62 - Git Reset 실전


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.