자꾸 같은 실수를 반복해서 메모용으로 작성해둔다 ㅎ
커밋 메세지에 오타를 냈다거나
커밋에 미처 포함하지 못한 작업 내용을 뒤늦게 발견하는 경우
해당 커밋을 작성하기 이전으로 돌아가기 위한 방법으로 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에 있던 작업 내용도 말끔히 사라진게 이런 경우다 (실수다)
'DEV' 카테고리의 다른 글
[GitHub][terminal] 비밀번호 인증 에러를 토큰으로 해결하고 로그인 하기 (1) | 2023.09.08 |
---|---|
VScode를 이용해서 백준 JavaScript(node.js) 풀이 연습하기 (0) | 2023.06.11 |
[terminal][vscode] MAC에서 code 명령어 사용하기 (0) | 2023.05.16 |
[GIT] git rebase를 활용해 commit 메세지 수정 & github 커밋 등록 시간 변경하기 (0) | 2023.04.27 |
[Tool] diff2html | 코드 변경 내용 파일로 전달하기 (0) | 2023.04.22 |