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 |