본문 바로가기

Coding/git

git - commit, add, pull, merge 취소

* reset 명령의 옵션 세가지

- soft: index 보존(add한 상태, staged 상태), 워킹 디렉터리의 파일 보존, 즉 모두 보존하고 HEAD 변경

- mixed: default 옵션, index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉터리의 파일 보존

- hard: index 취소(add하기 전 상태, unstaged 상태), 워킹 디렉토리의 파일 삭제, 즉 모두 취소하고 HEAD를 변경

 

* 작업의 취소

git reset --soft HEAD^

 

- soft 옵션을 사용하였으므로, 수정한 내역은 그대로 두고 head는 한 단계 위로 조정한다는 의미이다. commit을 취소한다는 것이다.

- hard 옵션을 사용하면 지금까지 작업한 것들이 다 날아가므로 조심해야 한다

 

* commit의 취소

git reset --hard @^

 

- hard를 이용하여 HEAD로 돌리는 명령어이다

- @는 1.8.4부터 도입된 HEAD의 동이어라고 한다. 같은 것으로는 @^, @~1, @~가 동일하다.

 

* pull, merge 취소

git reset --hard ORIG_HEAD

git reset --merge ORIG_HEAD

 

- ORIG_HEAD라고 하는 것은 이전에 작업한 곳의 HEAD이다.

- 즉, pull이나 merge를 하는 경우에 ORIG_HEAD를 남기게 되는데, pull을 잘못 받거나 merge를 잘못하게 되면 이것을 이용한다.

 

* add의 취소

git reset HEAD

 

- 즉, default인 mixed를 이용하여 HEAD로 돌아가게 하는 방법이다.

 

 

*** 작업할 때는 항상 branch를 사용하는 것이 좋다. 만약 push를 할 경우 commit을 지저분하지 않게 하려면 branch에 해야 force push를 할 수 있기 때문이다.

 

 

 

출처: git. commit, add, pull, merge 취소