회사에서 일을 하거나 개인 프로젝트를 할때도, 커밋 실수가 나서 되돌려야 하는 경우가 많은데 이미
원격 저장소에 푸시를 한 경우, 자꾸 구글에서 반복적으로 찾게 되는 경향이 있어서 정리를 해야겠다는 생각에 글을 작성하게 되었습니다.
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 브랜치명
'Git' 카테고리의 다른 글
깃헙에서 공식적으로 공개한 git 공부 curriculum (0) | 2022.06.20 |
---|---|
git graph 및 git conflict 정리 (0) | 2022.06.05 |
git author 변경하기 (0) | 2021.12.29 |
github에 잘못 올라간 파일 삭제하기. (0) | 2021.12.29 |