짧은 답변:
git reset 'HEAD@{1}'
긴 대답 :
Git은 모든 참조 업데이트 (예 : 체크 아웃, 재설정, 커밋, 병합)를 기록합니다. 다음을 입력하여 볼 수 있습니다.
git reflog
이 목록 어딘가에 당신이 잃어버린 커밋이 있습니다. 방금 입력 git reset HEAD~
하여 실행 취소하고 싶다고 가정 해 보겠습니다 . 내 Reflog는 다음과 같습니다.
$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]
첫 번째 줄은 HEAD
0 위치 전 (즉, 현재 위치)이 3f6db14이고; 로 재설정하여 얻었습니다 HEAD~
. 두 번째 줄은 HEAD
1 위치 전 (즉, 재설정 전 상태)이 d27924e라고 말합니다. 특정 커밋을 확인하여 얻었습니다 (현재 중요하지는 않지만). 따라서 재설정을 취소하려면 git reset HEAD@{1}
(또는 git reset d27924e
) 를 실행하십시오 .
반면에 HEAD를 업데이트 한 이후로 다른 명령을 실행 한 경우 원하는 커밋이 목록의 맨 위에 있지 않으므로을 (를) 검색해야합니다 reflog
.
마지막 참고 사항 : reflog
재설정하지 않으려는 특정 지점에 대한 마스터 를 보는 것이 더 쉽습니다 HEAD
.
$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]
이것은 일반적인 것보다 잡음이 적어야합니다 HEAD reflog
.