Git 커밋 수정, 롤백, 그리고 복구 방법 총정리

민준·2025년 2월 4일
post-thumbnail

1. 직전 커밋 수정하기 (git commit --amend)

  • 마지막 커밋 메시지를 변경할 수 있음
  • 새로운 커밋이 만들어지는 것이 아니라 기존 커밋을 수정하는것 (마지막 커밋을 덮어 씌움)
  • 이를 이용해 파일을 추가하고 커밋을 수정할 수 있음
git commit --amend

2. 직전 커밋을 롤백하고 다시 만들기 (git reset HEAD~1)

  • 바로 이전 커밋이 삭제됨
  • 변경된 파일은 그대로 남아 있음 → 다시 커밋할 수 있음
git reset HEAD~1

2.1. Reset세부옵션 (--soft, --mixed, --hard)

git reset --soft HEAD~1  # 커밋만 삭제, Staging 유지
git reset --mixed HEAD~1 # 커밋 삭제 + Staging 초기화
git reset --hard HEAD~1  # 완전히 삭제 (되돌리기 어려움!)

2.2. 여러 개의 커밋을 정리 및 수정 (git rebase -i)

git rebase -i HEAD~3
  • 마지막 N개의 커밋을 수정 가능하게 열림
  • 다음과 같은 옵션 선택 가능:
    • reword → 커밋 메시지 변경
    • edit → 커밋 내용을 변경
    • drop → 커밋 삭제
    • squash → 여러 커밋을 합치기

3. 실수로 삭제한 커밋 복구 (git reflog)

git reflog
  • 이전에 수행했던 모든 git 명령어 히스토리를 확인할 수 있음.

  • HEAD 상대 표현법 중 Reflog 에서 표기되는 @(At-Sign)

    • @(At-Sign) : Git 명령어를 수행하며 HEAD가 변경되기의 이전 HEAD (ORIG_HEAD로 불림)
  • git reflog 통해 이전에 수행했던 히스토리들을 쭉 살펴보고 원하는 커밋의 SHA 해시값을 봤으면

    • 해당 해시값으로 현재 브랜치를 이동시킬수 있고 : git reset --hard <해시값>
    • 해당 해시값으로 새 브랜치를 만들수도 있다 : git checkout -b backup <해시값>

0개의 댓글