본문 바로가기
Notes

[Git] git reset --hard 되돌리기

by Yonghip 2024. 10. 12.

깃을 사용하다 보면 커밋메시지를 바꾼다거나 파일을 더 추가하고 싶다는 이유 등으로 git reset 명령어를 자주 사용한다. reset --soft로 돌아가면 문제없는데 커밋 이후 파일을 변경하면 reset --hard로 급하게 돌아오고 커밋하는 경우도 종종 있다. 문제는 이 과정에 중요한 코드가 누락될 수가 있다는 건데. 이번에는 이걸 되돌리는 방법에 대해 설명해 보겠다.

커밋 내역 확인(git reflog)

예시를 위해 Commit1~4 순으로 커밋했을 때 get reflog를 통해 위와 같이 커밋한 순서대로 커밋아이디와 커밋 메시지가 적혀있는걸 확인할 수 있다.

이후 git reset --hard 305ef51로 과거 버전으로 이동하면 이후 커밋한 내역들(Commit_4)가 사라진걸 확인할 수 있다.

git reflog를 확인해 보면 이전에 git reset --hard로 날려버린 커밋 아이디와 커밋 메시지가 아직 남아있는걸 알 수 있다.

다시 한번 git reset --hard <커밋 아이디>

이후 과정은 다시 원하는 위치의 커밋 아이디를 통해 원하는 위치로 이동하면 된다. 여기서는 get reset --hard 7b92c9a 로 기존 hard reset 이전 위치로 다시 이동했고 파일도 복원된걸 확인할 수 있다.