[GitHub 100일 챌린지] Day 61 - Git Reset 개념 이해
[GitHub 100일 챌린지] Day 61 - Git Reset 개념 이해
100일 챌린지 Day 61 - Git Reset은 커밋을 되돌리는 강력한 명령어입니다. 세 가지 옵션의 차이를 정확히 이해해야 안전하게 사용할 수 있습니다.
배울 내용
- Git Reset의 개념과 동작 원리
- Soft, Mixed, Hard 세 가지 옵션
- 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 라이센스를 따릅니다.
