포스트

[GitHub 100일 챌린지] Day 63 - Git Revert로 안전하게 되돌리기

[GitHub 100일 챌린지] Day 63 - Git Revert로 안전하게 되돌리기

100일 챌린지 Day 63 - Revert는 히스토리를 유지하면서 변경사항을 되돌리는 안전한 방법입니다.

배울 내용

  1. Revert vs Reset 차이점
  2. Revert 사용법과 실전 예시
  3. 여러 커밋 되돌리기

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 라이센스를 따릅니다.