반응형
git pull 을 받고 컨플릭트를 해결하려다 git reset --hard 으로 마지막 커밋을 삭제하였다.
자 reset 을 취소하고 삭제했던 커밋을 되돌려보자.
이렇게 취소할 수 있는 이유는 Git 에서 커밋, 체크아웃, 머지, 등의 이력을 모두 기록하기 때문이다.
Git(28) reset 으로 삭제한 커밋 원래대로 되돌리기
일단 로그를 확인해야 한다. 돌아가야 할 로그를 확인하고 명령어를 통해 다시 돌아가보자.
1. ref로그 확인하기
HEAD 는 마지막 커밋의 참조로 가장 최신 커밋 을 가리키는 좌표같은 것이다.
- HEAD@{0} 은 현재 상태를 가리킨다. ex) reset 해서 마지막 커밋이 삭제된 상태
- HEAD@{1} 은 마지막 명령어가 실행된 상태이다. ex) 마지막 커밋을 한 상태
- HEAD@{2}은 전전 명령어가 실행된 상태이다. ex) 마스터 브랜치로 체크아웃을 한 상태
git reflog 로 이력을 확인해보자. 내가 돌아가야 할 커밋을 찾는다. HEAD@{1} 여기로 돌아가야 삭제하기 전으로 돌아갈 수 있다.
$ git reflog
6b96584 (HEAD, origin/master, origin/HEAD, master) HEAD@{0}: reset: moving to HEAD@{1}
65aa6fe HEAD@{1}: reset: moving to HEAD^
6b96584 (HEAD, origin/master, origin/HEAD, master) HEAD@{2}: rebase (start): checkout master
6b96584 (HEAD, origin/master, origin/HEAD, master) HEAD@{3}: pull: Fast-forward
b091093 HEAD@{4}: checkout: moving from DAN-142 to master
849aa5d (origin/DAN-142, DAN-142) HEAD@{5}: reset: moving to HEAD
849aa5d (origin/DAN-142, DAN-142) HEAD@{6}: commit: [DAN-142] Add request modal
2. 명령어로 돌아가기
돌아가야 할 커밋인 HEAD@{1} 을 적어준다. 그럼 원래대로 돌아간다.
$ git reset --hard HEAD@{1}
gitreset--hard _HEAD is now at 65aa6fe Merged in DAN-105 (pull request #61)
반응형
'Git' 카테고리의 다른 글
Git(30) git cherry-pick 사용법 (0) | 2021.09.19 |
---|---|
Git(29) git stash 란 (0) | 2021.09.08 |
Git(27) git rebase 로 커밋관리하기 (2) | 2021.09.03 |
Git(26) Jira와 BitBucket 을 연동한 개발 과정 (0) | 2021.08.31 |
Git(25) git commit --amend 커밋 수정 후 덮어쓰기 (0) | 2021.08.30 |
댓글