[git] 원격 저장소에 올라간 커밋 되돌리기
in Devlog on JavaScript
원격 저장소에 올라간 커밋 되돌리기
종종 원격 저장소에 올라간 커밋을 되돌려야 할 경우가 있다. 예시로 브랜치를 잘못 선택하여 올렸다던가 하는 경우가 있다.
크게 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
이제 커밋하고 푸시하면 리버트가 된다.
2023년 새해에는 성장하고 함께하고 싶다면?
Pre A 단계 이상의 스타트업 C 레벨들이 모여서 커뮤니티를 만들었습니다. 같이 스터디하고 친해질 일잘러를 찾습니다.