[git] 원격 저장소에 올라간 커밋 되돌리기


원격 저장소에 올라간 커밋 되돌리기

종종 원격 저장소에 올라간 커밋을 되돌려야 할 경우가 있다. 예시로 브랜치를 잘못 선택하여 올렸다던가 하는 경우가 있다.

크게 2가지 방법이 있는데.

  1. 커밋한 흔적을 지워버린다.
  2. 되돌리는 커밋을 날린다.

커밋한 흔적을 지워서 되돌리기

이 방법은 협업에 있엇서 전혀 추천하지 않는 방법이다. 되돌리더라도 되돌리는 흔적이 남아야하는데 이경우는 흔적도 없이 되돌려버린다.

실수라도 해 다른 요소들마저 지운다면 온몸에 식은땀을 흘릴 상황이 올것이다.

로컬에서 커밋 되돌린 후 강제 푸시

이 방법은 쉽게 이야기하면 로컬에서 커밋 되돌린 후 강제 푸시 라고 할 수 있다.

먼저 로컬에서 git reset을 하여 되돌리고 싶은 커밋들을 되돌린다.

$ git reset --hard HEAD~3

그리고 나서 강제 커밋을 한다.

$ git push -f origin master

다시 이야기하지만 이 방법은 흔적도 남지 않기 때문에 조심히 사용하여야 한다.

되돌리는 커밋을 날린다.

이 방법은 좀 더 안정적인 방법으로 잘못 올려서 정정한다는 커밋을 날리는 것이다.

git revert

git revert를 사용하는 방법이다.

$ git revert [되돌리고 싶은 commit의 hash]

리버트할 때 마다 커밋이 생기므로 범위를 주고, 커밋을 하나로 만들고 싶다면 아래처럼 하자.

git revert --no-commit HEAD~3.. # 또는 master~3..master

이제 커밋하고 푸시하면 리버트가 된다.




© 2017. by isme2n

Powered by aiden