본문 바로가기

Tool/Git

(GIT) reset과 checkout의 원리

현재 상태 : 한 개의 파일에 4번의 커밋 이력 

네 번째 이력을 삭제

git reset --hard 5641a79735933341590d08078147ac91cbc6ad85

 

: 현재 checkout 한 master가 어떤 commit을 최신 commit으로 가리키는    파일

 

순서

1. ./HEAD 을 본다.

2. refs/master를 본다.

3. 리셋을 한다는 것은 현재 보고 있는 branch의 최신 커밋을 바꾸는 행위


리셋을 취소하고 싶을 때

 

 

옆의 두 개의 파일에 reset 하였던 메시지가 저장되어 있다.

 

 

cc286f245a38abe97c6f84038d1d7f57208595bb 5641a79735933341590d08078147ac91cbc6ad85 choijunwoo <mike6321@naver.com> 1577275809 +0900 reset: moving to 5641a79735933341590d08078147ac91cbc6ad85

 

 

 

: 마스터 브랜치에서 일어나는 여러 가지 중요한 사건들을 기록해둔다.

 

: 위험한 명령을 하기 전에 현재 브랜치의 헤더가 가리키고 있는 커밋을 해당 경로에다 기록해둔다.

 

명령어:

git reset --hard ORIG_HEAD

복구완료!

git reflog


checkout

 

 

 

현재의 커밋 로그

 

 

 

 

 

 

 

 

 

 

checkout 명령어를 실행시켜보자

git checkout "commit id"

git checkout 5641a79735933341590d08078147ac91cbc6ad85

 

실행하면 브랜치는 커밋 아이디를 가리키게 된다. (즉! branch가 아니다!)

특정 branch에 속하는 것이 아니라!

 

현재 우리의 헤드는 특정 커밋을 직접

가리킨다.

 

 

 

 

 

 

 

git checkout master : 다시 돌아가기

master는 다시 특정 커밋 아이디를 참조하는 것이 아닌 master를 참조한다!

 

 

 

 

 

'Tool > Git' 카테고리의 다른 글

(GIT) Branch 정보확인  (0) 2019.12.25
(GIT) Branch 만들기  (0) 2019.12.25
(GIT) GIT 내부 파헤치지 - COMMIT (with gistory)  (0) 2019.12.25
(GIT) GIT 내부 파헤치지 - ADD (with gistory)  (0) 2019.12.25
(GIT) 명령어 정리  (0) 2019.12.25