[Git] Git 되돌리기 (restore, revert, reset)

SeungWoo Cha·2025년 9월 21일

[Git] Git_GitHub

목록 보기
3/4

Git 되돌리기 (restore, revert, reset)

1. 사용 이유

  • Git은 버전 관리 시스템이므로 언제든 이전 상태로 되돌릴 수 있습니다.

  • 상황에 맞게 선택:

    • git restore → 파일 하나 복구
    • git revert → 특정 commit 취소
    • git reset → 특정 commit 시점으로 시간 되돌리기
    • git switch / git checkout → 다른 branch나 commit으로 이동

2. git restore (파일 복구)

  • 파일을 최근 commit 상태 또는 특정 commit 상태로 되돌릴 수 있음.
# 최근 commit 상태로 되돌리기
git restore 파일명  

# 특정 commit 시점으로 복구
git restore --source 커밋아이디 파일명  

# staging 취소
git restore --staged 파일명  

3. git revert (commit 취소)

  • 특정 commit의 변경 사항만 안전하게 되돌림.
  • 새로운 commit을 생성하므로 협업 환경에서 많이 사용.
# 특정 commit 취소
git revert 커밋아이디  

# 여러 commit 한 번에 취소
git revert 커밋아이디1 커밋아이디2  

# 가장 최근 commit 취소
git revert HEAD  
  • merge commit도 revert 가능 (merge 취소 효과).

  • 실행 시 Vim 에디터가 열리면:

    • i → 메시지 수정
    • esc:wq 입력 후 종료

4. git reset (시간 되돌리기)

  • 특정 commit 시점으로 "아예" 되돌림.
  • 협업 환경에서는 매우 위험 → 개인 로컬에서만 사용 권장.
# 완전히 과거 시점으로 되돌림 (작업폴더도 reset)
git reset --hard 커밋아이디  

# staging area 유지
git reset --soft 커밋아이디  

# staging 해제 (작업 내용은 유지)
git reset --mixed 커밋아이디  

5. branch 단위 되돌리기

  • commit이 아니라 branch 단위로 과거 시점으로 돌아가고 싶을 때 사용.
# 특정 commit 시점으로 이동 (detached HEAD 상태)
git checkout 커밋아이디  
# or 최신 방식
git switch --detach 커밋아이디  

# 다시 main 브랜치로 돌아오기
git switch main  
  • detached HEAD 상태에서 수정 후 commit 하면, 임시 branch처럼 동작하므로 필요 시 새 branch 생성:
git switch -c 새브랜치명

6. 주의사항

  • git reset은 협업 저장소에서 금지
  • untracked 파일(git add 안 한 파일)은 reset으로 삭제되지 않음
  • untracked 파일까지 삭제하려면:
git clean -fd

요약:

  • 파일만 되돌릴 때 → restore
  • commit 취소 → revert
  • 과거 시점으로 완전 리셋 → reset
  • 브랜치/commit 이동 → switch/checkout
profile
한 발자국씩

0개의 댓글