실제 회사에서 업무를 진행하다 보면, 서버에 push 하기 전 commit 내용을 점검할 때가 있다. 그러다보면 누락된 파일이나, 잘못 적용된 소스가 발견 될 떄가 많은데 그때 사용하는 명령어를 기억하기위해 해당 글을 작성하기로 했다.
git reset --soft HEAD^
해당 명령어는 서버(git)에 반영(push)하기 전인, commit(커밋)을 취소 하는 명령어다.
서버에 로그는 남지 않는다.
아래는 위 명령어에 적용된 옵션 내용이다
--soft | commit을 취소하고 staged area는 그대로 유지한다. git add src/index.tsx git commit -m "test" git reset --soft HEAD^ 위 명령어를 사용 하고 나면 아래와 같은 상태가 된다 (git add가 유지 된 상태로 커밋이 취소가 됩니다.) *staged area* src/index.tsx |
--hard | [ 주의 필요 ]자주 사용할 일 없습니다. 본인이 서버에 반영하지 않은 파일들의 수정 내용까지 전부 삭제합니다. hard 옵션은 로컬 작업 폴더(내 컴퓨터)를 서버(GIT Repository)의 HEAD^ 시점으로 되돌린다 생각하시면 됩니다. 본인이 나중에 커밋하려고 소중하게 보관한 파일도 제거 되니, 주의하세요 git reflog로 복구는 가능합니다. |
HEAD^ | 쉽게 말해 가장 최신 커밋을 취소한다 생각하시면됩니다. git log 명령어를 입력하였을떄 가장 위에 있는 커밋이 취소됩니다. "^" 특수문자가 최신 커밋을 의미 한다 생각하시면됩니다. 물론 정확하게 commit id를 입력하여 적용할 수도 있습니다. git reset --soft HEAD 2efasdasdasdasdbef8bbca397df5b4b commit id는 git log를 통해 알수 있습니다. git log commit 2efasdasdasdasdbef8bbca397df5b4b Author: 김민혁 <mh.kim@xxx> |