강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

재림님의 프로필 이미지
재림

작성한 질문수

빠르게 git - 핵심만 골라 배우는 Git/Github

reset 실습

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

작성

·

295

1

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

퀴즈

`git reset --hard` 명령이 워킹 디렉토리, 스테이징 영역, 저장소에 미치는 영향은 무엇일까요?

저장소만 지정된 커밋으로 되돌립니다.

워킹 디렉토리, 스테이징 영역, 저장소 모두 지정된 커밋 상태로 초기화합니다.

스테이징 영역과 저장소만 되돌리고 워킹 디렉토리 변경사항은 유지합니다.

워킹 디렉토리와 스테이징 영역만 되돌리고 저장소는 그대로 둡니다.

답변 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

 

 

재림님의 프로필 이미지
재림

작성한 질문수

질문하기