본문 바로가기
Git

Git(28) git reset 으로 삭제한 커밋 원래대로 되돌리기

by 새발개발JA 2021. 9. 5.
반응형

 

 

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)

 

 

 

반응형

댓글