본문 바로가기
프로젝트/프리해요(부트캠프 프로젝트)

Github에서 Merge 취소하기

by hustle-ing 2023. 7. 6.

pull request를 올린 후 팀원들이 코드리뷰를 해주었다. 몇몇 수정해야할 사항을 알려주셨고, 간단한 수정을 마친다음 내가 직접 Merge를 하기로 하였다. 사실, pull request를 한 번 올려놓으면 수정사항을 수정 한 후 commit을 올리면 자동으로 이 pull request에 적용이 된다. 하지만 그때의 나는 이걸 미처 몰랐다. 그래서 pull request틀 취소한 후, 코드를 수정한 뒤, 다시 pull request를 올려서 Merge를 하였다. 바로 이 때 오늘의 비극이 시작되었다.

 

FE에 Merge를 했어야했는데, 실수로 Main에 Merge를 해버린 것. 취직한 후 이런 실수를 했다면(애초에 내가 직접 Merge를 할 일도 없겠지만) 나는 짤렸을 지도 모른다. 지금이라도 이런 실수를 겪어보는 걸 다행이라 생각하자.

 

왜 인지는 모르겠지만, 깃허브에는 버튼 하나만으로 이미 Merge된 사항을 되돌릴 수 없다.(기술적으로 어려운건가...? 제발 만들어주세요)

깃에서 Merge를 되돌리는 방법을 알아보자!

1. Reset을 이용하기

- merge가 일어난 직후에 git엔 ORIG_HEAD라는 새로운 참조 commit이 생긴다. 실수로 merge를 한 경우 즉시 취소할 수 있기 위함이다.

 

$ git reset --merge ORIG_HEAD

# 위와 같은 효과
$ git reset --hard ORIG_HEAD

 

2. Revert 활용하기

우측 하단에 보이는 Revert 버튼을 눌러주면 내가 Merge로 넣은 내용을 모두 뽑아낼 수 있다.

 

이후에 이런 창이 나오는데 revert-branch명 branch가 만들어지는 것을 알 수 있다. Create pull request 후에 다시 merge를 하면 뽑아냈던 내용을 다시 밀어넣을 수 있다.

 

 

3. 하드코딩하여 새롭게 Merge 하기

의외로 멘토님이 추천해주신 방법이다. 아직까지 우리의 Main 브렌치에는 아무 내용도 없었다. 초기세팅만 간단히 해둔 정도. 그러니 그냥 새로 만든 내용들을 다 지운다음 Merge를 하는 것! 실수로 Merge를 한 브랜치가 아주 단순한 구조를 가지고 있을때 사용할 수 있는 방법인듯 하다. 

 

 

💭 오늘의 생각

처음에 Merge를 잘못했을 땐, 하늘이 무너지는 줄 알았지만.... 그래도 지금 이런 실수를 해서 다음에는 절대절대 안할 것 같다. 오히려 좋아~!

댓글