본문 바로가기
Git

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

by dharana7723 2021. 12. 29.

회사에서 일을 하거나 개인 프로젝트를 할때도, 커밋 실수가 나서 되돌려야 하는 경우가 많은데 이미

원격 저장소에 푸시를 한 경우, 자꾸 구글에서 반복적으로 찾게 되는 경향이 있어서 정리를 해야겠다는 생각에 글을 작성하게 되었습니다.

 

git log를 통해 커밋 내역을 확인하고 가고 싶은 commit id를 입력합니다.

-> git reset {commit_hash_id}

그러면 해당 commit 으로 돌아가게 되고 

 

git push -f origin (브랜치명) 을 통해 강제로 푸시합니다.

그런데 회사에서 팀차원으로 개발을 진행하거나 푸시 강제로 인한 타격이 염려되는 경우가 있을 수 있을 것 같아 걱정이 되어 좀 더 조사해보아야 할 것 같다는 생각이 들었습니다.

 

또한 이 강제로 push한 커밋이 아닌 다른 기존 커밋에서 pull한 작업을 진행하면 제가 강제로 삭제했던 커밋들이 다시 생성되기 때문에 이런 팀 차원 문제를 고려해야한다는 글을 보았습니다. - 어쩌면 동시성 문제 ㅋㅋ

 

따라서 위와 같은 방식의 경우 개인이 진행하기에는 편리할지 모르지만 커밋 사항들을 전체적으로 삭제한 후 덮어쓰기 때문에

히스토리가 조작된다는 위험이 있습니다.

 

따라서 되돌렸다는 걸 히스토리에 남기기 위해서 revert를 사용하고 과거 커밋 기록으로 돌아갈 수 있습니다.

 

git revert {되돌리고 싶은 커밋의 hash id} 

또는 되돌리고자 하는 커밋을 한번만 생성하고 싶을때 

git revert --no-commit {hash_id}

또는 여러 커밋을 한번에 되돌리고 싶을때

git revert --no-commit HEAD~3..

 

그리고 나서 revert하여 변경한 사항들을 commit합니다.

git commit -m "Revert : feat:  커밋 a,b,c 메소드 변경"

 

최종적으로 해당 저장소의 해당 브랜치에 푸시하면 됩니다.

git push origin 브랜치명