본문 바로가기
개발 도구/Git

깃허브(Remote Repository)에 올린 커밋 취소하기(git revert)

by ♥︎해이나♥︎ 2022. 12. 4.
반응형

로컬 레포지토리에서 작업하고 깃허브에 push까지 완료했는데 취소해야 하는 상황이 발생한다면... 이럴 때 사용하는 명령어가 있다.

 

 

리모트 레포지토리 최신 커밋 취소하는 방법

로컬 레포지토리에서 작업한 내용을 커밋하고 깃허브의 리모트 레포지토리에도 업로드했다. 그런데 해당 작업 내용을 모두 되돌려야 한다는 사실을 알았다면...

 

 

그럴 때에는 아래 명령어를 사용해서 작업한 내용을 취소하면 된다.

 

git revert 커밋아이디

 

revert는 한국어로 번역하면 '돌아가는 것'이라는 의미이다. (출처: 구글 번역기)

 

 

커밋 히스토리를 살펴보니 최근 커밋의 아이디는 18173fa4e...로 시작하는 것을 확인할 수 있었다. 그래서 git revert 1817 명령어를 입력하고 실행했다. 

 

 

커밋 메세지를 입력하라는 새로운 화면이 나타난다. 원하는 메세지를 다시 작성해도 되고, 기존에 작성된 Revert~로 시작하는 메세지를 그대로 사용해도 된다. 나는 메세지를 그대로 사용하기로 하고 :wq 입력 후 엔터로 내용을 저장했다. 다시 커밋 히스토리를 확인해보니 로컬 레포지토리에 새로운 커밋이 생겼다. 작업한 파일을 열어보니 작업 이전으로 돌아간 것도 확인할 수 있었다.

 

 

하지만 (origin/main)이 가리키고 있는 커밋은 여전히 예전 커밋이었다. (당연하지?) 다시 git push를 해서 리모트 레포지토리에도 업로드해 주었다.

 

 

이제 해당 브랜치의 HEAD와 origin/main이 가리키는 커밋이 같아졌다. 리모트 레포지토리의 최신 커밋 취소 완료!


cf. 위에서 사용한 git history라는 명령어는 원래 git에서 사용하는 명령어가 아니다. 빠른 작업을 위해 직접 세팅한 것인데, 이것을 더 자세히 알고 싶다면 아래 링크를 클릭하면 된다.

 

2022.10.21 - [개발자 꿈나무/Git] - Git alias(별명) 설정하는 방법 & HEAD의 의미

 

Git alias(별명) 설정하는 방법 & HEAD의 의미

자주 사용하는 깃 커맨드에 단축키(별명)를 설정하여 사용할 수 있다. 이 때의 별명을 alias 라고 하고, 이 별명을 설정하는 것을 aliasing 이라고 한다. git alias 설정하는 방법 Aliasing하는 명령어는

heinafantasy.com

 

위의 작업에서 git reset을 사용하지 않은 이유

커밋을 과거 버전으로 되돌리는 명령어인 git reset을 알고 계신 분들이라면, 왜 이번에는 git reset이 아닌 git revert를 사용해야 하는지 궁금해 하실수도 있다. 이 포스팅에서 git reset을 사용하지 않은 이유는... 최신 커밋을 이미 리모트 레포지토리에 업로드했기 때문이다.

 

깃허브 저장소에 이미 push가 된 상태라면, 로컬 레포지토리에서 reset을 하고 다시 push를 하려고 할 때 진행이 되지 않는다. 왜냐햐면 깃허브에서는 로컬 레포지토리의 프로젝트가 최신 버전이 아니라고 인식할 것이기 때문이다. 그래서 깃허브에서는 git push를 하지 말고 git pull을 먼저 하라고 안내할 것이다.

 

이것이 우리가 git reset을 사용하지 않고 git revert를 사용하는 이유이다.

반응형

댓글