Git

고급 05. 작업 복구 실무: Reset, Revert, Restore, Reflog

실수로 날린 커밋을 reflog로 기적처럼 살려내는 방법, 이미 원격에 올린 커밋을 안전하게 취소하는 revert, 그리고 reset과의 결정적 차이

· 1min read · 3 views
고급 05. 작업 복구 실무: Reset, Revert, Restore, Reflog

핵심 요약

실수로 날린 커밋을 git reflog로 찾아내어 타임머신 복구하는 방법, 이미 원격에 푸시된 커밋을 안전하게 취소하는 revert 및 파일 원복 restore 가이드

개발을 하다 보면 손이 미끄러져서 잘못된 명령어를 치고 "아... 내 하루치 작업 다 날아갔다..."며 식은땀을 흘리는 순간이 찾아옵니다. 하지만 안심하세요. Git은 한 번이라도 커밋(Commit)되거나 스태시된 코드는 절대 쉽게 지우지 않는 완벽한 블랙박스를 가지고 있습니다. 이 문서는 프롬프트 상의 브랜치 상태(branch-name) $를 명시하여 날아간 코드를 100% 구출하는 실무 복구 기법을 다룹니다.


1. 절체절명의 위기: git reset --hard로 날려버린 커밋 살려내기

Step 1. 구출 열쇠: git reflog (Git의 비행기 블랙박스)

# 1. 블랙박스 기록 조회
(feature/payment) $ git reflog

# 출력 결과 예시:
# 3b4a1c2 HEAD@{0}: reset: moving to HEAD~1  <-- 내가 실수로 리셋한 순간!
# a8f9e01 HEAD@{1}: commit: feat: 결제 모듈 연동 완성  <-- 살려내야 할 내 작업 커밋!
# 1c2d3e4 HEAD@{2}: commit: feat: 사용자 장바구니 추가

Step 2. 잃어버린 커밋 시점으로 타임머신 타기

# 날아갔던 커밋 시점으로 원상 복구!
(feature/payment) $ git reset --hard a8f9e01
HEAD is now at a8f9e01 feat: 결제 모듈 연동 완성

# 확인: 사라졌던 커밋과 작업 파일이 100% 온전히 복원됨
(feature/payment) $ git log --oneline -n 3

2. 원격에 이미 올린 커밋 취소: Reset vs Revert

실무 안전 취소: git revert 사용법

이미 원격에 올라간 커밋은 과거를 지우는 reset 대신, 정반대 작업을 수행하는 새 커밋을 생성하는 revert를 사용합니다.

# develop 브랜치로 이동
(feature/payment) $ git switch develop
Switched to branch 'develop'

(develop) $ git pull origin develop

# 취소하고 싶은 버그 커밋의 해시(예: c3f91a2)를 지정하여 롤백 커밋 생성
(develop) $ git revert c3f91a2
[develop 5e6f7a8] Revert "feat: 잘못 올린 기능"

# 안전하게 원격 반영
(develop) $ git push origin develop

3. 커밋 전: 수정한 파일을 깨끗하게 원복하기 (git restore)

# 특정 파일 1개만 수정 전 상태로 되돌리기 (수정 내용 영구 삭제)
(feature/payment) $ git restore app/Services/PaymentService.php

# 현재 폴더의 모든 수정 파일 한 번에 되돌리기
(feature/payment) $ git restore .

Related Docs

Comments (0)

No comments yet. Be the first to comment!

Leave a Comment

로그인 후 댓글을 남길 수 있습니다.