개발환경/Git

[Git] Detached Head

frances._.sb 2024. 2. 1. 17:19
728x90

 

 깃랩을 사용하던 중, 어느 부분의 실수에서였는지 내가 branch에서 떨어졌다는 오류가 떴다.

 찾아보던 중, 아주 정리를 잘해주신 블로그가 있어 참고하여 내 상황을 정리해 보겠다.

 

https://devcamus.tistory.com/6

 

Detached Head

깃으로 버전관리 하다보면 작업내용을 commit하고 원격저장소에 push할 때, detached head 상태에 있다며, push가 reject될 때가 있다. 빨리 저장소에 push해야하는 상황에서 이런 오류를 마주치면 당황하

devcamus.tistory.com

 


 

 detached head가 무엇일까?

 

→ head가 branch로부터 떨어졌다는 소리로, branch를 통해서가 아닌 직접적으로 commit을 참조하는 상태이다.

 

 git 에서 head는 단 하나만 존재하며, 시작점과 같다. 일반적으로는 git에서 head → branch → commit의 순서가 된다. 그런데 여기서 나는 check out을 해버려서 git이 branch를 잃어버린 거고, detached head가 되었던 것이다.

 

 

 

 이 상태에서 계속해서 commit & push를 한다면? 

→ reject

 

 

 

순서 돌아보기

 

 1. head는 main(master)를 통해 revision number의 commit을 참조 

     - 여기서 revision number는 git의 본인 커밋 메시지에 우측버튼을 클릭하면 보인다.

 

 

 

 

 2. 첫 번째 커밋에서 checkout하여 detached head 상태

 

 

 3-1. 아몰랑 ~ 하고 commit을 한다면  → 세 번째 commit이 생기고 거기에 head가 붙게 될 것

 

  다음 명령어를 이용하여 main(master) branch를 참조하게 하면 된다.

 

git checkout main(master)

 

 

 

 3-2. 이상함을 감지하고 원상복구 후 다음과 같이 두 번째 commit에서 head를 떼어냈을 때  push 했더니 reject 당하고.. 내가 한 commit이 안 보인다..

 

 

  아래를 이용하여 main(master) branch를 세 번째 커밋을 참조하게 하여

git branch -f main(matser) HEAD

 

 

head가 main(master) branch를 참조하게끔 branch로 checkout 하면 끝!

 

git checkout main(master)

 

728x90
반응형