Git commit상태를 되돌리기

 이번에는 git에 커밋을 하였지만 다시 되돌려야 할때 커멘드를 알아보도록 하겠습니다.


사진1) 3개의 커밋 실행

사진1과 같이 3개의 커밋이 실행되 있습니다. 이때 가장 마지막의 커밋은 "commit-3"이고 "HEAD"입니다.


사진2) 터미널로 확인시

사진2에서와 같이 "test1.txt"에는 각각의 코멘트에 "test1", "test2" 그리고 "test3"를 작성했다. 


이제 commit를 원복할때 "--soft", "--hard" 그리고 default를 알아야 한다.


default : 뒤쪽에 "--soft", "--hard"를 넣지 않고 그대로 실행한다.


최신 코멘트에서 1단계 이전으로 코멘트를 원복한다.

$ git reset HEAD~1


사진3) 명령실행


사진4) commit 원복

"--soft", "--hard" 없이 그냥 "reset"을 하게 되면 마지막에 수정한 것의 staging이 해제가 됩니다. 이때 다시 commit-3으로 만들려면 "git add test1.txt"를하고 commit를 "commit-3"으로 해야 합니다.


최신 코멘트에서 1단계 이전으로 코멘트를 원복한다. (soft)

$ git reset HEAD~1 --soft


--soft : commit를 원복하지만 변경사항이 Staging상태이다.


사진5) soft로 commit 원복


사진6) soft로 원복

--soft를 사용할시 default와 다른점은 staging상태가 풀리지 않는 것이다. commit 직전의 단계로 가고 이때 다시 코드를 수정하고 add를 할수 있다.


--hard : commit를 원복하지만 변경사항이 모두 삭제된다. (사용시 주의!!!)


최신 코멘트에서 1단계 이전으로 코멘트를 원복한다. (hard)

$ git reset HEAD~1 --hard


사진7) hard로 commit 원복



사진8) hard로 commit 원복

--hard는 가장 주의를 주어야 하는 reset옵션이다. 이 터미널을 수행하면 수정한 내용이 모두 삭제되고 이전 커밋으로 돌아가게 된다.


만약 해당 커밋ID로 원복하면 아래와 같이 터미널을 작성한다.

commitId으로 코멘트를 원복한다.

$ git reset [commitId]


사진9) commitId로 원복



사진10) commitId로 원복


commitId로 원복할때는 반드시 "git log"에 있는 정확한 commitId가 필요합니다. 해당 명령어 또한 --soft, --hard을 사용할수 있으며 동일하게 동작됩니다.


추가로 HEAD~1는 HEAD에서 한단계 이전 commit을 이야기 하는 것입니다. HEAD~2는 HEAD 2단계 이전 commit을 말하는 것입니다.

댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)