[Git] detached HEAD 문제 해결 방법

git을 사용할 때 add와 commit 까진 실행이 잘 되는데 다음과 같이 detached HEAD 문제로 push 가 안 될 때 해결 방법을 정리하였습니다.

1
2
3
4
5
6
D:\project\Study\react> git push
fatal: You are not currently on a branch.
To push the history leading to the current (detached HEAD)
state now, use

git push origin HEAD:<name-of-remote-branch>

Detached Head 란, 말 그대로 head가 (branch로부터) 떨어져 있는 상태를 뜻한다.
즉, branch 를 통해서가 아니라 직접 다이렉트로 commit을 참조하고 있는 상태를 뜻한다.

git branch 명령어를 사용하여 살펴보니 지금 현재 브랜치는 HEAD detached from bdcfe3d8 로 설정되어 있습니다.

1
2
3
D:\project\Study\react> git branch -a
* (HEAD detached from 537d4a3)
master

해결 방법

임시로 새로운 브랜치를 만들어 main 브랜치와 병합하여 해결하는 방법입니다.

브랜치 생성

현재 Head 분기를 참조하게끔 임시 브랜치를 생성합니다.

1
2
git branch temp
git checkout temp

또는

1
2
# -b 명령어 사용
git checkout -b temp

이렇게 하면 temp 라는 브랜치가 만들어지고, temp로 checkout을 하게 됩니다.

master 브랜치로 이동

1
git checkout master

병합

새로운 브랜치와 master 브랜치를 병합합니다.

1
git merge temp

새로운 브랜치 삭제

임시로 만든 temp 라는 브랜치를 삭제합니다.

1
git branch -d temp

push

마지막으로 push 를 실행하면 됩니다.

1
git push

push를 실행했을 때 다음과 같이 내용이 보이면 git push --set-upstream origin master 명령어를 사용해서 기본 브랜치를 설정합니다.

1
2
3
4
5
6
7
8
D:\project\Study\react> git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream origin master

To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
Share