본문 바로가기

programmer/Git 사용법

쉬운 Git 사용법 - 8 (reset, revert)

reset, revert



저번 글에서 reset의 hard 옵션을 선택해서 실행해보았는데요. 이번에는 mixed 옵션을 실행해 보겠습니다. hard는 원하는 commit으로 가면서 하던 작업도 모두 지워졌는데요, mixed는 제가 하던 작업(아직 commit되지 않은 작업)을 유지하면서 master의 위치를 옮기는 것입니다.



.


35.



지금 commit의 상황입니다.


enter image description here


코드에 다음과 같은 코드가 추가되어 있고 아직 commit되지 않은 상태입니다.

<li>reset-mixed</li>



그러면 현재 master의 위치에서 한 단계 아래의 commit으로 reset을 통해 옮겨보겠습니다.


enter image description here


해당 commit에 오른쪽 버튼을 클릭하고 Reset current branch to this commit을 선택합니다.


enter image description here


위와 같은 창을 만날 수 있는데요. mixed를 선택하고 ok를 합니다. mixed의 설명을 보시면 keep working copy but reset index라고 되어있습니다. 즉, 내가 하던 작업은 그대로 냅두고, commit만 옮기는 것입니다. ok를 누릅니다.


enter image description here


그러면 reset이 진행됩니다. 위의 화면처럼 uncommit상태의 코드, 즉, 제가 작성하던 코드는 그대로 남아있습니다. 만약 hard로 진행했다면 코드의 상태가 현재 있는 commit으로 바뀌겠죠?

36.



지금까지 reset에 대해 알아보았는데요. 이번에는 revert를 직접 사용해보겠습니다. revert도 역시 과거의 commit으로 돌아가는 것인데요. 기존의 reset처럼 과거로 돌아가면 기존의 commit은 지워지는 것이 아닙니다. 이게 무슨 말 일까요? commit이 지워지지 않고 오히려 새로운 생성되면서 과거의 commit으로 돌아갑니다. 한번 해보겠습니다.


enter image description here


지금 기존의 commit 상태입니다. 제가 새로운 코드를 삽입했는데요. commit을 진행하겠습니다.


enter image description here


commit이 되었습니다. 이런 식으로 revert4까지 추가시켜보겠습니다.


enter image description here


이제 revert를 실행해보겠습니다. 바로 전의 commit으로 되돌아갈 수 있는데요. ‘revert3 추가’했던 commit으로 돌아가기 위해서는 밑의 그림처럼 ‘revert4 추가’했던 commit에서 마우스 오른쪽 버튼을 클릭합니다.


enter image description here


Reverse commit…이 보입니다. 클릭합니다.


enter image description here


경고창이 뜨는데요. yes를 눌러줍니다.


enter image description here


그러면 위의 그림처럼 commit 메세지가 자동으로 생성되면서 code를 보시면 ‘revert3 추가’했던 버전으로 돌아간 것을 확인할 수 있습니다.



37.



revert는 이렇게 기존의 commit을 없애지 않고, 새로운 commit을 생성하면서 과거로 돌아갈 수 있습니다. 위의 과정을 한번 더 해보겠습니다.


enter image description here


‘revert2 추가’했던 시점으로 돌아가기 위해서 ‘revert3 추가’했던 commit에서 마우스 오른쪽 클릭을 하고 Reverse commit을 실행합니다.


enter image description here


그러면 위의 그림처럼 commit 메세지가 자동으로 생성되면서 ‘revert2 추가’했던 버전으로 돌아갑니다. Revert “li revert3 추가” 라는 메세지는 “li revert3 추가”에서 한 단계 뒤로 갔다는 뜻이죠.




이번 글에서는 reset의 mixed 옵션과 revert 기능에 대해 알아보았습니다. 다음 글에서는 git 명령어를 할 수도 있구요. SourceTree 프로그램에서 할 수 있는 조금 심화된 git의 기능을 알아보겠습니다.