[Git] Force push, reset한 commit 되돌리기

Joey·2022년 2월 6일
1

Git

목록 보기
1/1

작업을 하다 보면 commit을 정리하거나 merge conflict를 줄일 목적으로 force push나 hard reset을 하게 되는데, 몇 일간 작업하던 commit을 통째로 날려먹는 경험을 하게 되었다. Force push나 reset으로 날아간 commit은 복구할 수 없다고 알고 있었는데, 다행히도 다시 돌릴 수 있는 방법이 존재했다.

애초에 조심해서 이런 일이 없는게 가장 좋겠지만, 언젠가 또 같은 실수를 반복하게 될 것 같아서 기록을 남긴다.


Git에서 강제성을 띄는 작업(e.g. reset, force push 등)을 하다가 실수로 다른 commit이 다 날아가더라도, git 이력에는 최근 commit이 기록되고 있다. reflog 명령어를 사용하면 최근 기록된 commit들을 확인할 수 있다.

$ git reflog

이 명령어를 사용하여 다음과 같이 잃어버린 commit을 복구할 수 있었다.

  1. git reflog 명령어를 사용해서 이전 commit 이력을 조회한다.
  2. 되돌아가고 싶은 commit의 SHA key를 확인한다.
  3. git checkout 명령어로 해당 commit을 checkout한다.
  4. Branch를 만들고, checkout한다.
  5. 날아갔던 commit을 다시 push한다.

git push -f 로 사라진 commit 복구


Reference

Think

이번 경험을 통해 배운 것

  • 위험한 작업을 할 때는 항상 세번 이상 확인하고 천천히 진행하자.
  • 되도록이면 위험한 작업을 하는 일이 없도록 신경써서 작업하자.
  • Git의 동작 원리를 공부해 둘 필요가 있겠다. 생활코딩 Git 원리 수업을 공부해 보자.
profile
software engineer

0개의 댓글