git pull 을 했더니 branch가 갈라지는 경우

문제

git pull을 했더니 다음과 같은 메시지를 뿜어냅니다.
현재 브랜치와 'origin/master'이(가) 갈라졌습니다,
읭? 이게 뭔 소리죠? glog를 확인해봅니다.


origin/master와 로컬의 master가 분리되었습니다. 이게 무슨일이야!

원인

사실은 범인이 접니다! ㅡ.ㅡ 여러가지 원인이 있지만 제가 발생시킨 방법은 다음과 같습니다.
  1. devel에서 commit 후 push
  2. build에서 pull
  3. devel에서 재수정 후 commit --amend하여 합침, 그리고 push
  4. build에서 pull
4번에서 pull을 했더니 commit이 달라져있던거죠. 우리가 원하는건 결국 devel에서 마지막으로 push했던걸 build에서 pull 하는 겁니다.

해결

일단 급한불은 끄기 위해 제가 아는 명령어를 조합해서 해결하기로 했습니다.

왼쪽 빨간선 두개 아래로 내리면 origin/master 와 같은 commit으로 가게 됩니다.
# 주의 --hard 옵션은 로컬 변경사항까지 다 날려버립니다. 반드시 stash 같은걸로 백업해두세요.
$ git rebase --hard HEAD~2
그리고 그냥 origin/master로 올라갑니다
git pull origin master
급했기때문에 일단 이렇게 해결했지만, 좀 더 우아한 해결방법이 있을것 같습니다. 나중에 또 문제 생기면 찾아보도록 하겠습니다.

댓글

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

리눅스 멀티코어를 사용하는 tar 압축/해제

WSL에 X-Window로 Terminator 설치하고 Minicom까지