1. 원인
팀원과 동일한 파일 수정하여 git pull 시 conflict 발생
conflict 해결과정에서 실수로 과거 커밋번호로 Check Out
이후 pull 시도하자 Cannot check out from unborn branch 오류가 출력
2. 해결방법
이클립스 내에서 조작하기 복잡할 것 같아서 git Bash
를 사용했다.
a. git status로 상세 내역 확인
HEAD detached at commit번호
라는 내용이 표시되었다.
Detached HEAD란?
- HEAD가 특정 branch가 아닌 특정 commit을 직접 참조하고 있는 상태
- Detached HEAD 상태에서 새롭게 생성된 commit은 참조하는 branch가 없다. 따라서 다른 branch로 checkout 하게 되면 해당 commit은 가비지 콜렉터에 의해 삭제된다.
- Detached HEAD 상태에서 생성한 commit을 유지하려면 새로운 branch나 tag를 만들어 해당 commit을 참조하게 만들면 된다.
$ git checkout -b branch001
- 보통 해당 repo에서 기록을 남기지 않고 시뮬레이션 하고 싶을 때 detached 상태를 이용하지만, git에서 지양하는 상태다. test branch를 만들어 사용하는 것이 좋다.
b. git branch로 현재 branch 확인
이클립스에서 최근 commit으로 잘못 checkout을 하는 바람에, HEAD가 정상적으로 있어야 할 branch(master)가 아닌 특정 commit에 있었다.
따라서 정상적이지 않은 branch에서 pull을 시도하니 unborn branch 오류가 출력된 것이었다.
c. branch 이동
다시 master로 checkout하여 master branch로 이동하였다.
d. 다시 pull 시도
다시 원래 출력되던 conflict 상태로 돌아왔다.
References