[Git] 과거로 돌아가기(reset, reset 취소)

go_go_·2022년 10월 31일
0

Git

목록 보기
10/12
post-thumbnail

💻 과거로 돌아가는 방법, reset

git reset

git reset [옵션] [커밋ID]
  • HEAD 파일이 커밋ID로 수정되도록 변경
  • 옵션에 따라 커밋 환경으로 바뀌는 범위가 달라짐
  • 옵션은 --hard, --soft, --mixed 를 자주 사용

예시) 커밋 2까지 있는 상태에서 1로 돌려본다.


각 옵션마다 영향받는 범위

  • working directory : 실제 작업 공간
  • index : add한 파일 모아두는 공간
  • repository : commit들 저장되는 공간
옵션working directoryindexrepository
--hardooo
--mixedxoo
--softxxo

⌛ reset 취소하기

삭제한 커밋을 되돌리고 싶다면 삭제한 커밋ID를 알아내 다시 reset하면 된다. 삭제한 커밋ID는 두 파일에 저장된다.
1. ORIG_HEAD
2. logs/refs

1. ORIG_HEAD
.git/ORIG_HEAD : reset 명령어 실행 전 git이 현재 브랜치의 HEAD가 가르키던 커밋을 저장해놓는다. 이를통해 reset을 취소할 수 있다.

git reset --hrad ORIG_HEAD

2. logs/refs
.git/logs/refs/heads/main : 커밋이 어떻게 수정되었는지 log 기록이 저장되어 있다. 아래 명령어 통해 볼 수 있다.

git reflog

예시) git reflog

가장 왼쪽 노란색 커밋ID를 사용하거나 HEAD{숫자}를 활용해도 된다.
HEAD{0}의 경우 가장 최근 활동이다.

git reset --hrad [커밋ID 또는 HEAD{숫자}]

예시) 커밋 2가 다시 돌아온 모습이다


💻checkout 활용하기

checkout으로 특정 커밋 시점으로 갈 수 있다.

git checkout 커밋ID

You are in 'detached HEAD' state 라는 메세지가 뜨며 커밋ID가 이름인 브랜치가 생긴 것 처럼 보인다. 하지만 이는 실제 브랜치가 아니고 .git/HEAD가 가르키는 위치가 우리가 적은 커밋ID라는 뜻이다.
현재 우리는 커밋ID 상태에 와있는 것이다. 다시 main 브랜치로 돌아가면 커밋 브랜치는 사라진 상태이다.


출처
https://www.youtube.com/playlist?list=PLuHgQVnccGMA8iwZwrGyNXCGy2LAAsTXk

profile
개발도 하고 싶은 클라우드 엔지니어

0개의 댓글