안경잡이개발자

728x90
반응형

  깃(Git)을 활용하다 보면 자신이 수행한 다양한 작업(Commit)을 되돌리고 싶을 때가 있습니다.



  기본적으로 특정한 Git Hub의 저장소와 동일한 프로젝트를 가지도록 git pull 명령어를 수행해 봅시다. git pull 명령어는 원격지에 있는 소스코드를 우리 컴퓨터에 그대로 가져오고, 자동으로 merge까지 수행해주는 명령어입니다. 저는 이미 Git Hub의 소스코드와 제 컴퓨터의 소스코드가 정확히 일치하기 때문에 별도로 바뀐 사항이 없다는 메시지가 출력됩니다.


※ 특정 지점으로 프로젝트 자체를 되돌리기 ※


  특정한 지점으로 프로젝트 자체를 되돌리는 방법을 소개해드리겠습니다. 일단 기존에 있는 특정한 소스코드를 수정해보세요. 저는 하나의 함수를 추가해보았습니다. 제가 추가한 함수는 mul() 함수에요.



  이후에 다음과 같이 수정된 내역을 반영해보도록 하겠습니다.



  결과적으로 푸시까지 한 번 진행해 보았습니다. 커밋 및 푸시 내역은 git log 명령어를 통해서 확인할 수 있어요.



  저는 예전에 커밋(Commit)이 진행되었던 위치로 돌아가고자 합니다. 이 때 사용할 수 있는 명령어는 git reset 명령어입니다. 특정한 지점의 해시 값을 그대로 복사하여 git reset --hard 명령어로 돌아가도록 하겠습니다. 이 경우 돌아간 지점의 이후 내역은 증발해버리게 됩니다.


  이처럼 돌아간 지점의 이후 내역들은 완전히 지워버리고자 한다면 hard 옵션을 사용할 수 있습니다. 또한 만약에 돌아간 이후의 내역들을 남겨놓고자 한다면 soft 옵션을 사용할 수 있습니다. 기본 옵션은 mixed 옵션으로, mixed 옵션을 사용하면 돌아간 이후의 변경 내역들은 남아있지만 인덱스 값들이 모두 초기화됩니다.



  실제로 특정한 지점으로 돌아가보았습니다.



  정말 그 당시 커밋했던 것과 동일한 프로젝트 구성으로 돌아가게 되었습니다. 이 경우, 우리 로컬 컴퓨터에서의 프로젝트 구성이 Git Hub 저장소의 구성과 다르게 됩니다. 그래서 푸시(Push)를 진행하려고 해도 오류가 발생합니다. 이 때는 -f 옵션으로 강제로 푸시를 할 수 있습니다.



  이처럼 강제로 푸시를 하게 되면 Git Hub 저장소에서도 완전히 특정한 지점으로 프로젝트가 되돌아간 것을 확인할 수 있습니다.


  이제 한 번 커밋 메시지를 변경하는 방법에 대해서 알아보도록 하겠습니다. 다음과 같이 저는 하나의 함수를 추가해서 커밋을 해보았습니다.




  이후에 하나의 함수를 추가적으로 더 만든 상황이 되어 커밋 메시지를 변경하고자 한다고 가정해봅시다. 저는 sub() 함수를 추가했어요.



  이 때는 git commit --amend 명령어를 사용할 수 있습니다.



  그러면 자동으로 에디터가 열려서 커밋 메시지를 수정할 수 있어요. 저는 첫 번째 줄의 커밋 메시지를 바꾼 뒤에 저장했습니다.



  이후에 다시 git push을 진행하여 변경된 커밋 메시지가 반영된 것을 확인할 수 있습니다.



728x90
반응형