• 카테고리

    질문 & 답변
  • 세부 분야

    개발 도구

  • 해결 여부

    미해결

git reset 이후 다시 돌아가는 방법( staging area, working directory)

21.09.20 10:45 작성 조회수 174

1

안녕하세요, 강의 잘 듣고 있습니다.
 
다름이 아니라,  git reflog 를 이용하면 커밋취소했던 내용만 복구가 됩니다.
 
그런데, git reset --hard HEAD^ 로 하면 working 디렉토리, staging area에 있는 내용도 다 삭제가 되잖아요. 이 부분을 다시 복구하는 방법도 알려주실 수 있나요?

답변 1

답변을 작성해보세요.

1

안녕하세요, git reset 을 통해 삭제된 내역을 되돌리는 방법을 여쭈어보신 건가요?

git reset --hard HEAD^ 명령어를 통해 커밋을 되돌린 뒤

git reflog 명령어를 치시면 아래와 같이 

HEAD 가 있었던 내역이 나오게 됩니다.

 

reset 이후 현재 HEAD는 아래 굵게 표시한 것처럼 390eafb에 위치한 걸 알 수 있죠.

 

minchul@DESKTOP-9KULGUE MINGW64 ~/Desktop/git (master)

$ git reset --hard HEAD^

HEAD is now at 390eafb 2

 

minchul@DESKTOP-9KULGUE MINGW64 ~/Desktop/git (master)

$ git reflog

390eafb (HEAD -> master) HEAD@{0}: reset: moving to HEAD^

2ecc6a0 HEAD@{1}: commit: 3

390eafb (HEAD -> master) HEAD@{2}: commit: 2

4cc7f6b HEAD@{3}: commit (initial): 1

 

만일 reset을 하시기 전으로 돌아가고 싶으시다면 

이전의 HEAD로 reset하시면 됩니다.

예를 들어 reset하기 직전인 

 

2ecc6a0 HEAD@{1}: commit: 3

 

로 되돌아가고 싶으시다면 

 

git reset --hard HEAD@{1} 

 

명령어를 통해 되돌아가실 수 있습니다.

그럼 아래와 같이 reset을 치기 전으로 돌아갔다는 걸 확인할 수 있을 겁니다.

 

minchul@DESKTOP-9KULGUE MINGW64 ~/Desktop/git (master)

$ git reset --hard HEAD@{1}

HEAD is now at 2ecc6a0 33

 

minchul@DESKTOP-9KULGUE MINGW64 ~/Desktop/git (master)

$ git log

commit 2ecc6a091d26a2a689280380495131a13e871e32 (HEAD -> master)

Author: Kang Minchul <tegongkang@gmail.com>

Date:   Tue Sep 21 00:52:40 2021 +0900

 

    3