프론트엔드 첫걸음

git reset 본문

개발 공부/Git

git reset

차정 2022. 7. 8. 23:30

git log --oneline 을 보고 되돌아갈 해시를 복사한 후 
git reset [돌아갈 곳의 해시] 하면 커밋이 취소된다.

git reset 0327ca3

그러나 워킹디렉토리에는 작업물이 남아있는 상태이다.

 

만약 워킹디렉토리의 작업물을 삭제하고싶으면 git reset --hard [해시번호] 사용하면 된다

또는 git reset --hard HEAD~1 사용해도 된다.

 

그러나 git reset은 내 커밋을 없애버려서 협업하는 사람들에게 혼동을 준다.

이미 커밋되어 공유된 코드를 내가 바꿔버리는 명령어이기 때문에 위험하다.

git revert가 안정적이다.

내가 3까지 커밋해서 친구들은 3을 받아서 작업하고있는데 내가 1로 돌아가서 작업하고 있으면 친구들은 어리둥절~

 

 

나 혼자 작업할 때 마지막 커밋을 취소하고 싶다면

// [방법 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