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을 말하는 것입니다.
댓글
댓글 쓰기