Git Reset (흑마법?)

devswansong·2024년 10월 25일

Git Reset 은 평생 쓸 일 없어야한다는 말을 들은적 있는데
개인적으론 **원격 저장소에 이미 반영된 작업은 웬만해선 절대 reset 을 하지않고 로컬에서 작업 중 커밋이 복잡하게 구성된 경우 유용하게 사용할 수 있었습니다.

git reset

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

각 옵션마다 영향받는 범위

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

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

git reflog
예시) git reflog

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

git reset --hrad [커밋ID 또는 HEAD{숫자}]
예시) 커밋 2가 다시 돌아온 모습이다

profile
unagi.zoso == ziggy stardust == devswansong

0개의 댓글