Organization 레포를 개인 레포로 포크해서 커밋 후 Pull Request (이하 PR) 을 날리는 방식으로 운영되고 있었다.
그런데 어제 PR만 날려야 하는 상황에서 실수로 Auto Merge를 시켜버린 상황.
Revert
버튼 클릭 후 내역 PRRevert
버튼을 클릭하고 이어지는 버튼을 그대로 클릭하면 된다.)
Revert
후 다시 PR을 시도했더니 conflict가 발생해서,
PR에 해당하는 커밋 내역을 개인 레포에서 아예 지워준 후 새로 커밋해서 PR을 해보기로 했다.
변경사항을 다른 곳에 백업해두고 변경에 해당하는 내역을 지워주거나 파일 삭제
개인 레포로 돌아와 git log -oneline
으로 PR을 날렸던 커밋의 부모 커밋 번호 확인
git reset --hard {커밋 번호}
로 HEAD를 부모 커밋으로 돌린다.
git push --force origin {원격 브랜치명}
으로 변경사항 푸시
여기까지 하면 PR을 날렸던 최근의 커밋(들)이 날아가고,
해당 커밋의 부모 커밋 상태로 레포가 롤백된다.
변경사항 다시 적용 후 커밋
원래대로 다시 PR 날리기
Revert를 사용한 merge의 복구(?)는 흔적을 남긴다.
실수했던 흔적까지 없애고 싶다면 다른 방법을 찾아보길 바란다.
여럿이서 같이 쓰는 레포를 잘못 건드려서 문제가 생기면 등에 식은땀이 쫙 흐르는데..
그래도 어찌어찌 잘 해결되어서 다행이다.
언제나 조심하고 또 조심해서 쓰기.
그거랑은 별개로 git 공부는 꾸준히 해야겠다는 생각이 든다.