개발 공부/Git
git reset
차정
2022. 7. 8. 23:30
git log --oneline 을 보고 되돌아갈 해시를 복사한 후
git reset [돌아갈 곳의 해시] 하면 커밋이 취소된다.
그러나 워킹디렉토리에는 작업물이 남아있는 상태이다.
만약 워킹디렉토리의 작업물을 삭제하고싶으면 git reset --hard [해시번호] 사용하면 된다
또는 git reset --hard HEAD~1 사용해도 된다.
그러나 git reset은 내 커밋을 없애버려서 협업하는 사람들에게 혼동을 준다.
이미 커밋되어 공유된 코드를 내가 바꿔버리는 명령어이기 때문에 위험하다.
git revert가 안정적이다.
나 혼자 작업할 때 마지막 커밋을 취소하고 싶다면
// [방법 1] commit을 취소하고 해당 파일들은 staged 상태로 워킹 디렉터리에 보존
$ git reset --soft HEAD^
// [방법 2] commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에 보존
$ git reset --mixed HEAD^ // 기본 옵션
$ git reset HEAD^ // 위와 동일
$ git reset HEAD~2 // 마지막 2개의 commit을 취소
// [방법 3] commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제
$ git reset --hard HEAD^
만약 첫번째 커밋을 취소하고 싶다면
git update-ref -d HEAD
git rm --cached -r .
https://velog.io/@jakeseo_me/git-%EC%B2%AB%EB%B2%88%EC%A7%B8-%EC%BB%A4%EB%B0%8B-%EC%B7%A8%EC%86%8C%ED%95%98%EA%B8%B0
https://gmlwjd9405.github.io/2018/05/25/git-add-cancle.html