[GitHub 100일 챌린지] Day 63 - Git Revert로 안전하게 되돌리기
[GitHub 100일 챌린지] Day 63 - Git Revert로 안전하게 되돌리기
100일 챌린지 Day 63 - Revert는 히스토리를 유지하면서 변경사항을 되돌리는 안전한 방법입니다.
배울 내용
- Revert vs Reset 차이점
- Revert 사용법과 실전 예시
- 여러 커밋 되돌리기
1. Revert란?
정의: 특정 커밋의 변경사항을 취소하는 새로운 커밋 생성
gitGraph
commit id: "A"
commit id: "B (버그)"
commit id: "C"
commit id: "Revert B"
2. Revert vs Reset
| 특징 | Revert | Reset |
|---|---|---|
| 히스토리 | 유지 | 삭제 |
| 방법 | 새 커밋 | HEAD 이동 |
| 공유 브랜치 | ✅ 안전 | ❌ 위험 |
| 협업 | ✅ 권장 | ❌ 비권장 |
1
2
3
4
5
6
7
8
9
# Reset: 커밋 삭제
A - B - C
↓ reset
A - B
# Revert: 새 커밋 추가
A - B - C
↓ revert C
A - B - C - C'
3. 기본 사용법
1
2
3
4
5
6
7
8
# 최근 커밋 되돌리기
git revert HEAD
# 특정 커밋 되돌리기
git revert abc1234
# 여러 커밋 되돌리기
git revert HEAD~3..HEAD
4. 실전 시나리오
시나리오 1: 버그 있는 기능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 커밋 히스토리
git log --oneline
# def5678 feat: Add payment feature (버그 있음!)
# abc1234 feat: Add user profile
# Revert
git revert def5678
# 새 커밋 생성됨:
# 123abcd Revert "feat: Add payment feature"
# def5678 feat: Add payment feature
# abc1234 feat: Add user profile
# Push 가능!
git push origin main
시나리오 2: 여러 커밋 되돌리기
1
2
3
4
# 최근 3개 커밋 모두 되돌리기
git revert HEAD~2..HEAD
# 각 커밋마다 revert 커밋 생성
5. Revert 옵션
–no-commit
1
2
3
4
5
6
# Revert하되 자동 커밋하지 않음
git revert --no-commit HEAD
# 변경사항 확인 후 수동 커밋
git status
git commit -m "Revert: Remove buggy feature"
–no-edit
1
2
# 기본 커밋 메시지 사용
git revert --no-edit HEAD
6. 충돌 해결
1
2
3
4
5
6
7
8
9
10
11
12
13
# Revert 중 충돌 발생
git revert abc1234
# CONFLICT in file.js
# 충돌 해결
vim file.js
# 해결 완료
git add file.js
git revert --continue
# 또는 취소
git revert --abort
7. Merge 커밋 Revert
1
2
3
4
5
# Merge 커밋은 부모 지정 필요
git revert -m 1 <merge-commit>
# -m 1: 첫 번째 부모 (main)
# -m 2: 두 번째 부모 (branch)
8. 언제 Revert를 사용하나?
✅ Revert 사용:
- 이미 Push한 커밋
- 공유 브랜치 (main, develop)
- 협업 중인 기능
- 프로덕션 배포 후
❌ Reset 사용 (로컬만):
- Push 안 한 커밋
- 개인 작업 브랜치
- 실험적 기능
정리
완료 체크:
- Revert와 Reset의 차이를 설명할 수 있다
- 커밋을 Revert할 수 있다
- Revert 중 충돌을 해결할 수 있다
핵심 요약:
- Revert = 새 커밋으로 되돌리기
- 히스토리 유지 = 협업 안전
git revert HEAD- 최근 커밋- Push한 커밋은 항상 Revert!
다음: Day 64 - Git Restore →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
