티스토리 뷰


제목을 어떻게 지어야 할 지 모르겠어서 조금 거창하게 지었는데 요약하자면 아래와 같은 일이 있었다.

작업하던걸 푸시하고 pr 날리려고 하는데 깃허브는 pr 전에 머지될 수 있는지 없는지를 알려준다. 딱 보니까 충돌이 나서 충돌을 해결해야 하는 상황이 옴. 그래서 그냥 pr 미뤄두고, 메인브랜치에서 최신을 풀 받은 후 다른 브랜치를 만들어서 스테이시 시킨 작업들을 붙였다.
그랬더니 pr날리라는 메세지가 두개가 뜸. 필요없는 하나의 메시지 어떻게 지우지? 상황으로 자세히 알아보자.



자. 작업을 한다.
A를 메인 브랜치, B를 이제 곧 pr을 날릴 브랜치라고 가정해보자.
pr을 날리려고 했는데 최신거를 풀 못받아와서 충돌이 난다고 깃허브가 미리 알려준다.
이때 어떻게 해야할까?

우선, pr을 올리지 말고 다시 작업 공간에 들어온다.
작업 공간에 들어와서 바로 직전의 push를 아래의 명령어로 취소한다.

git reset HEAD^

그러면 unstage 상태가 된다. 이것들을 일단 stash 시켜두고, 새로 생성할 브랜치에 붙여주자.

git stash

이제 B 브랜치에는 어떠한 진행중인 작업들도 없다.
A로 돌아가 최신의 것 들을 pull 받자. 그리고 C라는 브랜치를 만들자.

git checkout A git pull git checkout -b C

이제 C에 스테이징 한 것들을 받는다.

git stash apply

아까 푸시했을 때 충돌이 났었기 때문에, 분명 충돌이 일어 날 것이다.
충돌을 해결해주자.

~충돌 해결 후~ git add . git commit -m "-" git push origin C

이제 깃허브에 들어가보면 어라? pr을 두 개의 브랜치에서 남기라는 메세지가 뜬다.

이 노란 칸이 두개 생겼다고 보면 된다. 하나는 필요 없는데? B는 해결 했는데?

일단 제대로 된 브랜치 pr을 남겨주자.
그래도 하나가 남는다. 얘를 어떡하지?

로컬에서도 브랜치를 지워보고 리모트에서도 지워보았다.
그랬더니 아래와 같이 이도저도 못하고 같이 평생 살아야 하는 상황 발생.

어쩔?

해결책은
로컬에서 다시 같은 이름의 브랜치를 만들고 pr요청을 없애기 위한 push를 진행한다.
그리고 pr을 close하면 해결된다.

사실 이 전에 브랜치를 지우면 안됐었다. 그냥 pr날리고 close 누르면 됐던것을....

정말 처음 겪어보는 상황이라 깃허브 오류인가 생각도 들었던 사건이었다.

반응형
댓글