본문 바로가기
Engineering WIKI/Version Control

Git - git reflog로 hard-reset되돌리기

by wonos 2021. 5. 2.

git log를 한줄로 볼때 다음과 같은 명령어를 사용합니다.

$ git log --oneline

커밋 하나 전으로 돌아가기는 다음과 같습니다.

$ git reset --hard HEAD~

다음과같이 상황을 가정해봅니다.

7e5b465커밋을 하고, b6596fc커밋은 한 뒤 3477f6커밋을 했다고 가정합니다.

> 3477df6 (HEAD -> master) commit 2

> b6596fc commit 1

> 7e5b465 (origin/master, origin/HEAD) Initial commit

그런데 실수로 3477df6을 $ git reset —hard HEAD로 지워버려서, 현재 HEAD는 b6596fc (HEAD -> master)가 되어버렸습니다.

이럴때, git reflog 명령어로 모든 커밋로그를 확인한 후에 git reset --hard 명령어를 사용하여 되돌아 갈 수 있습니다.

$ git reflog // 커밋로그가 모두 나온다.

$ git reset --hard 3477df6

하지만 모든 커밋들의 hash를 기억하고 있는 사람이 있을 수 없으니… 그 해결책은 바로 ..!

git reflog 란?

  • 참조(reference)의 기록(log)를 보여주는 명령
  • hard reset을 되돌릴 수 있다!

Summary

  • git의 커밋은 “세이브포인트”랑 같다.
  • git reflog명령을 이용하면 hard-reset도 되돌릴 수 있다.
  • 거의 모든 상황에서 커밋은 복구될 수 있다.

'Engineering WIKI > Version Control' 카테고리의 다른 글

Git - 브랜치 추적  (1) 2021.04.26
Git - 포크한 깃허브 저장소를 원본 저장소와 동기화 하기  (0) 2021.04.26
SVN - Repository 생성  (0) 2021.04.15
SVN - 체크아웃 프로젝트 Maven 설정  (0) 2021.01.17
Eclipse SVN 제외  (0) 2021.01.17
10분만에 배우는 Git  (0) 2018.09.10
Git 과 Github (11)  (0) 2018.09.10
Git 과 Github (10)  (0) 2018.09.10