EDU/codeIt

깃 원격저장소에 올라간 커밋 취소하기, revert(이전, 여러개 취소가능)

이앤지 2021. 10. 10. 14:18

로컬저장소에서만 했다면 이전의 커밋으로 되돌리는 커맨드 $git reset 으로 충분하다.

HEAD가 브랜치와 같이 이전의 커밋을 향할 수 있으니까!

하지만 이상태에서는 git push는 시도할 수가 없다.

이미 원격저장소에 커밋된 다섯번째 커밋이 있기 때문에 아래같은 메시지가 뜨게 된다.

git pull을 먼저하고 push를 하라는 것!

https://project-angieangel.tistory.com/100

 

git push와 git pull, merge, fetch

깃허브에서는 아래와 같이 수정해서 커밋, 깃 로컬 레퍼지토이에서는 아래와 같이 수정하고 커밋. 그리고 푸쉬하면? rejected 된다. 이미 다른내용으로 깃허브 원격저장소에 추가한 내용이 있는데

project-angieangel.tistory.com

 

그렇다면?

원격저장소에서 이미 push한 커밋을 되돌리려면?

$git revert 커밋아이디 를 입력한다. 의미는 아래와 같다. 

revert는 이런식으로 커밋을 추가해서 push를 해도 문제가 없도록 해준다.

정리하면 원격저장소에 네번째 커밋과 원격저장소의 여섯번째 커밋은 같은 상황이 된거!

커밋이 늘어난거는 이미 push를 했기 때문에 어쩔수 없는 사항이라

쓸데없는 커밋을 줄이기 위해서는 그만큼 push를 신중히 해야한다는게 핵심이다.

 

 

아래처럼 수정하고/ 커밋하고/ 푸쉬했는데 revert를 해야되면

커밋아이디를 찾아서 $git revert 커밋아이디 를 입력한다.

 

그럼 revert되는 다음 기본적인 커밋메시지 입력창이 뜨는데

그대로 사용해도 되고 수정해도 되고

:wq로 저장하고 빠져나오면

커밋 내용이 잘 나와있다. 그리고나서 push가 가능하다.

 

 


 

만약에 이전, 여러개의 커밋을 취소해야 한다면? 역시 git revert 커맨드를 이용한다.

$git history 해서 취소하고 싶은 커밋을 찾으면

$git revert 지우고싶은커밋아래의커밋..지우고싶은커밋 까지를 입력한다.

 

그러면 revert 커밋메시지창이 각각 뜨게된다.

각각 저장하고 끄면된다.

그러면 완료됬다는 메시지가 뜬다.

 

커밋 히스토리를 봐도 revert 커밋이 잘 입력됬다는 것을 확인할 수 있다.