reset 은 HEAD 포인터의 위치를 다른 커밋개체로 이동 시킵니다.


1. merge 의 취소


직전 merge 를 취소하고 다시 작업을 하고 싶다면


> git reset --merge ORIG_HEAD

or

> git reset --hard ORIG_HEAD


2. commit 의 취소


> git reset [--soft/mixed/hard] <TARGET_VERSION>


soft : index, work tree 둘다 유지합니다. 약간의 오타만 수정하여 다시 커밋하고 싶을때 유용합니다.

mixed : 미지정시 기본값, index는 취소 work tree만 유지합니다.

hard : index, tree 모두 제거 합니다.


TARGET_VERSION 에 HEAD포인터의 위치를 지정한다.


HEAD 의 여러 표현방법 (1.8.4 버전부터 @ 표식을 대신 사용할 수 있다.)


HEAD^[n] : n번째 부모 버전  (the parent of HEAD), 생략시 1


HEAD~[n] : n번째 부모의 부모. (the first parent of the first parent or the grandparent)


HEAD~ 와 HEAD^ 는 같은 대상이지만 특정숫자들을 입력하면 대상이 달라진다. (HEAD^4 와 HEAD~4 는 다르다.) 하지만 다음 예제는 같은 커밋개체을 가르킨다.


HEAD^^^ == HEAD~3    (HEAD^^^ 가 첫번째부모의 첫번째부모의 첫번째부모 노드를 뜻하므로 같은 값을 가르킨다.) 



3. ORIG_HEAD


.git/ORIG_HEAD 파일에 저장되는 포인터. HEAD의 이전 포인터 정보를 가진다. ( HEAD@{1}, HEAD^, HEAD~ )



Posted by KENSIN
,