티스토리 뷰

상황 및 문제

Git 터미널에 commit 와 push 가 제대로 진행되지 않고 아래와 같은 문구가 나타남

Warning: you are leaving 1 commit behind, not connected to any of your branches: (후략)

 

 

(해석 및 요약)
현재 'detached HEAD' 에 있으며, 브랜치에 영향을 미치지 않는 실험적인 변경과 커밋을 할 수 있다. 
만약 커밋 내역을 유지하고 싶으면 새로운 브랜치를 만들어 -c를 이용해 switch 명령어를 사용하면 된다.

※ git switch -c 새로운브랜치 명령어를 입력했음에도 이슈는 해결되지 않음

 

 

 

원인

detached HEAD 는 브랜치에 연결되지 않고 애매하게 붕 떠있는 상태

작업을 하고 커밋을 해도 브랜치가 없으니 누적할 수도 없음. (다만 커밋 해시 값을 알고 있으면 접근 가능)

브랜치에 붙어 있지 않은 커밋을 만들었고, 따라서 리모트 브랜치에도 push 가 당연하게 되지 않음

 

 

해결

1. 임시 브랜치 생성하여 커밋 붙이기

# 1) 임시브랜치를 생성하고 체크아웃한다.
git checkout -b 임시브랜치명

# 2) 병합할 브랜치로 이동한다.
git checkout 병합할브랜치명

# 3) 임시 브랜치를 병합브랜치에 머지한다.
git merge 임시브랜치명

# 4) 사용하지 않는 임시 브랜치를 삭제한다.
git branch -d (또는 -D) 임시브랜치명

 

 

2. 기존 브랜치에 커밋 붙이기 (실제로 해결한 방법)

# 1) 둥둥 떠다니는 커밋의 id를 확인
git reflog

# 2) 기존 브랜치로 이동
git checkout 기존브랜치

# 3) 떠다니던 커밋을 기존브랜치에 붙이기
git cherry-pick 커밋id

 

 

 

 

 

참고

git detached Head의 뜻과 복구하는 법 : Git Detached Head: What This Means and How to Recover - CloudBees Tech Stack (stackshare.io)

detached HEAD 관련 글: https://www.devhak.com/blog/git-detached-head

댓글