DEV
[GIT] git reflog를 이용하여 git reset한 내용 원복하기
개발하는 이령
2023. 5. 6. 02:16
자꾸 같은 실수를 반복해서 메모용으로 작성해둔다 ㅎ
커밋 메세지에 오타를 냈다거나
커밋에 미처 포함하지 못한 작업 내용을 뒤늦게 발견하는 경우
해당 커밋을 작성하기 이전으로 돌아가기 위한 방법으로 reset을 자주 사용하고 있었다.
$ git reset HEAD^ --soft
// HEAD^ : 바로 직전(한 단계 이전)으로 돌아감
// --soft : 직전 작업을 staged에 가져옴
문제는 이렇게 돌아가고나니깐 수정할게 없는 경우 (...)
즉, 다시 reset하기 이전으로 돌아가고 싶은 경우다.
staged에 작업이 들어가 있으니 다시 커밋할 수도 있지만
이 경우는 커밋 시간을 새로 갱신하는 것이기 때문에 이를 원하지 않는 경우가 종종 발생했다.
때문에 다른 해결 방법으로 reflog를 활용한다.
git reflog
: 로컬 저장소에서 HEAD의 업데이트 기록을 출력하는 명령어
$ git reflog
reflog를 이용하면 로컬에서 내가 사용한 명령어들이 나열되는데
나는 git reset HEAD^ 하기 이전으로 돌아가고 싶은 것이니 HEAD@{0}을 확인하면 된다.
이를 이용해서 git reset을 다시 활용한다.
$ git reset HEAD@{0} --hard
여기서 하나, --hard로 싹 밀어버리기 때문에 로컬에서 커밋하지 않은 작업 내용은 사라질 수 있으니 주의하자!
맨 처음 Changes에 있던 작업 내용도 말끔히 사라진게 이런 경우다 (실수다)