Git Reset 은 평생 쓸 일 없어야한다는 말을 들은적 있는데
개인적으론 **원격 저장소에 이미 반영된 작업은 웬만해선 절대 reset 을 하지않고 로컬에서 작업 중 커밋이 복잡하게 구성된 경우 유용하게 사용할 수 있었습니다.
git reset
git reset [옵션][커밋ID]
HEAD 파일이 커밋ID로 수정되도록 변경
옵션에 따라 커밋 환경으로 바뀌는 범위가 달라짐
옵션은 --hard, --soft, --mixed 를 자주 사용
각 옵션마다 영향받는 범위
working directory : 실제 작업 공간
index : add한 파일 모아두는 공간
repository : commit들 저장되는 공간
| 옵션 | working directory | index | repository |
|---|---|---|---|
| --hard | o | o | o |
| --mixed | x | o | o |
| --soft | x | x | o |
삭제한 커밋을 되돌리고 싶다면 삭제한 커밋ID를 알아내 다시 reset하면 된다. 삭제한 커밋ID는 두 파일에 저장된다.
1. ORIG_HEAD
2. logs/refs
git reset --hrad ORIG_HEAD
git reflog
예시) git reflog
가장 왼쪽 노란색 커밋ID를 사용하거나 HEAD{숫자}를 활용해도 된다.
HEAD{0}의 경우 가장 최근 활동이다.
git reset --hrad [커밋ID 또는 HEAD{숫자}]
예시) 커밋 2가 다시 돌아온 모습이다