Appia의 IT세상

[깃, Git] Git 커밋(commit) 취소하기 feat. git reset, git revert 본문

Development/GIT

[깃, Git] Git 커밋(commit) 취소하기 feat. git reset, git revert

Appia 2023. 12. 16. 07:01
반응형

[깃, Git] Git 커밋(commit) 취소하기 feat. git reset, git revert

[깃, Git] Git 커밋(commit) 취소하기 feat. git reset, git revert

 

이전 Git에 대한 포스팅에서 Git의 변경사항에 대해서 스테이지에 add된 항목들에 대해서 취소하는 방법에 대해서 살펴봤습니다. 물론, 이 부분이 매우 효율적으로 사용될 수 있고, 실제 작업을 할 경우에 많이 사용되는 부분입니다. 아마도 매우 효율적으로 잘 사용하실 것이라고 생각합니다. 이번 포스팅에서는 Git의 커밋(commit)을 취소하는 방법에 대해서 2가지 명령어를 사용해서 알아보고자 합니다. 

[깃, Git] Git 변경사항 스테이징 취소하기

 

[깃, Git] Git 변경사항 스테이징 취소하기

[깃, Git] Git 변경사항 스테이징 취소하기 이전 포스팅에서 Git의 변경사항을 폐기하는 방법에 대해서 살펴봤습니다. 실제로, 이 부분은 매우 많이 사용되는 부분입니다. 그러면, 이번에는 기초적

appia.tistory.com

 

제가 커밋(commit)을 취소할 2가지 명령어는 다음과 같습니다. 

  • git reset
  • git revert

 

1) git reset 

먼저, git reset 명령어를 통해서 알아보고자 합니다. 

$ git reset <commit-hash>

 

그럼 간단한 예시를 통해서 한번 살펴보도록 하겠습니다. 먼저 이전에 사용한 간단한 repository를 재활용하도록 하겠습니다. 

여기에서 현재 사용하는 repository에 현재 commit 상황에 대해서 살펴보겠습니다. 

git log --oneline을 이용한 commit 상황 확인와 git status 명령어를 상황확인 

위의 부분을 참고했을 경우 현재 repository에는 변경사항이 없고, 다수의 commit들이 존재합니다. 그러면 commit 하나를 취소해보도록 하겠습니다. 

git reset 162cd5b

위의명령어를  실행하니, 다음과 같은 화면이 나타날 것입니다. 

git reset 명령어

그리고나서, git log --oneline과 git status를 진행해보니, 다음과 같은 화면을 확인할 수 있습니다. 즉, 커밋(commit)은 취소가 되었으나, 그 커밋(commit)과정에서 수정한 파일의 변경사항에 대해서는 수정되지 않은 상태입니다. 

git reset 결과 

 

저는 위와 변경사항들도 폐기하고 싶어, 이전 포스팅에서 배웠던 checkout 명령어를 통해서, 변경사항을 폐기하도록 하겠습니다. 

git checkout을 통한 변경사항 폐기

그리고, 나서 git status / git log --oneline을 입력하시면 다음과 같은 화면이나타날 것이니다. 

git log --oneline을 통한 현재 커밋(commit) 확인

위에서는 커밋(commit)이 취소되면서, 그 커밋(commit)과정에서 사용된 변경사항에 대해서는 폐기 되지 않았습니다. 그러면 이번에는 커밋(commit)이 취소되면서, 함께 변경사항도 폐기하는 방법에 대해서 알아보도록 하겠습니다. 

$ git reset --hard <commit-hash>

위에서와 같이 commit hash을 입력하기에 앞서서, "--hard" 옵션을 넣어주는 것입니다. 

 

그러면 위의 예제를 바탕으로 진행해보도록 하겠습니다. 

git reset --hard 명령어의 실행

그리고 나서, 다시한번 git log --oneline 과 git status  입력하여 결과를 확인하였습니다. 이전과 차이가 있음을 알 수 있습니다. 즉, --hard 옵션을 넣음으로, 커밋(commit)취소와 함께 변경사항도 함께 폐기가 됩니다. 

git log --oneline 과 git status  입력하여 결과를 확인

 

2) git revert

git의 경우, 혼자 작업 하는 경우도 있지만, 다수의 사람과 함께 작업을 하는 경우도 매우 많습니다. 그럴 경우 함부로 commit을 취소해버릴 경우, 협업 하는 다른 사람들에게는 이 부분들이 충돌의 소지가 될수도 있고, 다른 다양한 문제를 발생할 수 있습니다. 그래서, 이럴 경우을 대비해서, git revert라는 기능을 사용합니다. 즉, revert는 커밋(commit)을 취소하면서, 별도의 commit을 생성하는 것입니다. 그러면, 먼저 간단한 예제를 생성해보도록 하겠습니다. 

 

먼저, 파일 하나를 수정을 하겠습니다.  

git revert를 사용하기 위한 파일 수정

 

그리고 나서, 변경사항이 있음을 확인하고, 이 부분을 stage에 add하고 나서, 바로 commit을 진행하도록 하겠습니다. 

파일 수정 및 commit 진행 

 

그리고 나서, git log --oneline을 이용하여 현재 commit 상황을 확인하도록 하겠습니다. 그러면 다음과 같은 명령어를 사용하도록 하겠습니다. 

git revert <commit-hash>

git revert 명령어 실행

위의 명령어를 실행할 경우, 원래라면 다음과 같이 기본 edit에서 해당 commit 메시지를 입력하는 editor 창이 나타납니다. 여기에서 저장하시면, 위와 같이 revert관련해서 commit이 진행이 될 것입니다. 

revert 메시지 입력

 

그리고 나서, git log --oneline을 통해서 현재 커밋(commit)을 확인해보도록 하겠습니다. 

git revert 이후 git log --oneline결과

 

기존의 부분들은 그대로 있고, 이 부분에 대해서 수정을 하는 revert 관련 commit이 생성이 됩니다. 이와 같은 방법으로 git revert를 진행할 수 있습니다. 

이번 포스팅에서는 [깃, Git] Git 커밋(commit) 취소하기 feat. git reset, git revert라는 주제로 포스팅을 해봤습니다. git관련해서는 대부분의 내용에 대해서 포스팅을 통해서 알아봤습니다. 이제는 web서비스(github)와 함께 하는 부분에 대해서도 포스팅을 진행해보고자 합니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

 

 

반응형
Comments