Programming

힘내 태그를 확인하면 "분리 HEAD 상태"가됩니다

procodes 2020. 6. 2. 22:06
반응형

힘내 태그를 확인하면 "분리 HEAD 상태"가됩니다


내 자식 프로젝트의 배포 스크립트를 개발 중이며 방금 태그를 사용하기 시작했습니다. 다음과 같은 새로운 태그를 추가했습니다 v2.0.

git tag -a v2.0 -m "Launching version 2.0"

이 태그를 원격 저장소에 푸시했습니다

git push --tags

배포 스크립트를 실행하고 v2.0태그를 확인하려고 하면이 메시지가 나타납니다.

'분리 된 HEAD'상태입니다. 둘러보고 실험적으로 변경하고 커밋 할 수 있으며 다른 체크 아웃을 수행하여 분기에 영향을주지 않고이 상태에서 커밋을 버릴 수 있습니다. 생성 한 커밋을 유지하기 위해 새 브랜치를 만들려면 checkout 명령과 함께 -b를 다시 사용하여 지금 만들거나 나중에 할 수 있습니다. 예 : git checkout -b new_branch_name HEAD는 현재

그게 정상인가요? 내가 할 경우 저장소는 림보에 있습니다.

git branch

나는이 출력을 얻는다 :

* (no branch)
  master

이것이 명백한 경우에 죄송하지만 알아낼 수 없었습니다.


먼저 몇 가지 용어가 약간 단순화되었습니다.

에서 git하는 tag(같은 많은 다른 것들)을 불리는 것입니다 treeish . 프로젝트의 역사에서 요점을 언급하는 방법입니다. 나무는 태그, 커밋, 날짜 지정자, 서수 지정자 또는 기타 여러 가지가 될 수 있습니다.

이제 a branch는 태그와 같지만 움직일 수 있습니다. 브랜치를 "켜고"커밋하면 브랜치는 현재 위치를 나타내는 새 커밋으로 이동합니다.

귀하 HEAD는 "현재"로 간주되는 지점에 대한 포인터입니다. 당신이 저장소를 복제 할 때 일반적으로 HEAD가리 킵니다 master커밋에 차례로 가리 킵니다있다. 그런 다음과 같은 작업을 수행 하면 다른 커밋 을 가리킬 수있는 분기 를 가리 키도록 git checkout experimental전환합니다 .HEADexperimental

이제 설명입니다.

을 수행하면 git checkout v2.0으로 지정되지 않은 커밋으로 전환됩니다 branch. HEAD지금 "분리"와 지점을 가리키는되지 않습니다. 지금 커밋을하기로 결정했다면이 커밋을 추적하기 위해 업데이트 할 분기 포인터가 없습니다. 다른 커밋으로 다시 전환하면이 새로운 커밋을 잃게됩니다. 그것이 메시지가 말하는 것입니다.

일반적으로 할 수있는 일은을 말하는 것 git checkout -b v2.0-fixes v2.0입니다. 이렇게하면 커밋에서 나무가 가리키는 커밋 v2.0(이 경우 태그)에 새 분기 포인터가 만들어 지고이를 HEAD가리 키도록 이동합니다 . 이제 커밋을하면 v2.0-fixes분기를 사용하여 커밋을 추적 할 수 있으며 평상시처럼 작업 할 수 있습니다. v2.0코드를 보고 싶을 때 특히 수행 한 작업에 "잘못된"것은 없습니다 . 그러나 추적하려는 위치를 변경하려면 지점이 필요합니다.

git의 전체 DAG 모델을 이해하는 데 시간을 투자해야합니다. 놀랍도록 간단하고 모든 명령을 명확하게 만듭니다.


예, 정상입니다. 이는 헤드가없는 단일 커밋을 체크 아웃하기 때문입니다. 특히 (더 이상) 지점의 헤드가 아닙니다.

그러나 일반적으로 해당 상태에는 문제가 없습니다. 안전하다고 느끼면 태그에서 새 브랜치를 만들 수 있습니다. :)

참고 URL : https://stackoverflow.com/questions/5582208/checking-out-git-tag-leads-to-detached-head-state

반응형