상세 컨텐츠

본문 제목

git reset 명령어와 옵션

Study/GIT

by 휀스 2012. 11. 22. 09:54

본문


git reset 명령어와 옵션을 알아보자.


git reset 명령어는 git 을 특정 commit 상태로 돌려놓는 명령어이다.


git reset 의 옵션을 알아보며 사용법에 대해 살펴보자.


$ git reset -q aCommit pathA pathB pathC

aCommit 의 상태로 나열된 모든 path의 git 을 돌려놓는 것이다.


-q : Error 가 있을 경우에만 로그를 보여준다.


$ git reset -q --hard aCommit


reset 을 할 경우 기존의 수정사항이 있을때 적용하는 옵션이다.


--hard : 수정사항을 모두 무시하고 aCommit 상태로 돌려놓는다.

--soft : 수정사항을 모두 유지하고 commit 하기 전의 상태로 남겨둔다. 단지 HEAD 만 aCommit 으로 옮긴다.




사용예를 보자.


1. file1.c file2.c 를 수정한다.

2. git add file1.c file2.c

3. repository 의 내용을 merge 해야하는 경우가 발생.

4. git reset

5. git pull git://xxxx.xxxx.xxx


이 경우 git reset 을 하게되면 file1.c file2.c 의 수정내용이 그대로 유지되며 git add 만 undo 하게 된다.


1. git commit xxxx

2. git reset --soft HEAD^

3. edit files

4. git commit -a -c ORIG_HEAD


이 상황은 일반적으로 많이 발생하는 상황이다.

1 에서 commit 을 하였으나 수정이 잘못 되었을 경우 2 번의 명령으로 commit 과 git add 를 취소한다. (바로 이전의 commit 상태로 돌림) --soft 옵션을 사용하였으므로 수정내용은 모두 남아있다.

그리고 3 에서 잘못된 내용을 다시 고치고 4 의 git commit -a -c ORIG_HEAD 명령으로 commit 을 한다.

-c 옵션은 기존 commit 에서 사용한 comment 를 그대로 사용한다는 옵션이다.

수정하고 싶을 경우는 --amend 를 사용하면 된다.


1 $ git branch aBranch

2 $ git reset --hard HEAD~3

3 $ git checkout aBranch


특정 branch 에서 작업하다가 현재 작업 내용이 해당 branch 에 적당하지 않을 경우 수정내용을 다른 aBranch 로 옮기는 방법이다. 1 에서 aBranch 를 만들고 2 에서 작업내용을 redo 한 후 3 에서 aBranch 로 옮겨가는 것이다.


더 많은 내용은 http://git-scm.com/docs/git-reset 을 참고하면 된다.


출처 :  http://littlehead.tistory.com/4




관련글 더보기