반응형
이번 포스팅에서는 [실전 활용 및 고급 기술] 파트의 세부 주제인 과거 시점으로 되돌리기 (Reset & Revert)에 대하여 상세히 알아보겠습니다.

1. 과거의 커밋 자체를 지우고 돌아가기 (Reset)
reset은 특정 커밋 시점으로 완전히 시계를 돌려버리며, 그 이후의 미래 커밋 내역을 히스토리에서 삭제합니다. 돌아가는 방식에 따라 3가지 모드가 있습니다.
- --soft: 지정한 커밋으로 돌아가지만 수정한 코드는 보존되며 '준비 영역(Staged)'에 그대로 둡니다. (주로 커밋 메시지 재작성에 쓰임)
- --mixed: (기본값) 코드는 보존되지만 '준비 영역'에서 내려온 상태(Unstaged)로 둡니다.
- --hard: 시점 이후의 코드 수정 사항마저 모조리 파기하고 완벽히 과거로 회귀합니다. (매우 주의해서 사용)
# 현재 커밋 기준 2개 전 커밋으로 완전 되돌리기
$ git reset --hard HEAD~2
2. 이력을 유지하며 취소하기 (Revert)
revert는 과거를 없애는 것이 아니라, 취소하고 싶은 커밋의 코드 변경 사항과 정반대되는 "상쇄 커밋"을 새롭게 추가하는 안전한 방식입니다.
# a1b2c3d 커밋의 내용을 취소하는 신규 커밋 생성
$ git revert a1b2c3d
협업 시 필수 원칙: 자신의 로컬 환경에서 방금 한 커밋을 되돌릴 때는
Reset을 써도 무방하지만, 이미 원격 저장소에 Push 한 커밋을 취소할 때는 반드시Revert를 사용해야 합니다. 원격에 올라간 커밋을 강제로 지우면 동료들의 저장소 동기화가 완전히 파괴됩니다.
지금까지 과거 시점으로 되돌리기 (Reset & Revert)의 개념과 구체적인 활용 방안에 대해 살펴보았습니다. 이어지는 다음 포스팅에서 관련 심화 주제를 지속적으로 다루어보겠습니다.
반응형
'CI.CD > GIT' 카테고리의 다른 글
| [GIT] 최근 커밋 덮어쓰기 및 편집 (Amend) (0) | 2026.07.14 |
|---|---|
| [GIT] 특정 커밋만 선별하여 가져오기 (Cherry-pick) (0) | 2026.07.14 |
| [GIT] 미완성 작업 임시 저장하기 (Stash) (0) | 2026.07.14 |
| [GIT] 안전하고 깔끔한 브랜치 관리 전략 (0) | 2026.07.14 |
| [GIT] Merge와 Rebase의 차이 및 선택 기준 (0) | 2026.07.14 |