remote 왜 "git checkout origin/<branch>"을 실행 한 후에 "현재 어떤 지점에도 없다"라고 말하는 이유는 무엇입니까?



git track remote branch (1)

나는 Git 의 지시를 따르려고했다 . "현재 어떤 지점에도 없다." 변경 사항을 유지하면서 지점으로 돌아갈 수있는 쉬운 방법이 있습니까? 하지만 git checkout 은 깨진 것 같습니다.

$ git checkout origin/web-zach
HEAD is now at 1366cb1... Changed so css files not ignored

$ git status
# Not currently on any branch.
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .cordova/config.xml
#       www/languages/pt/sounds/
nothing added to commit but untracked files present (use "git add" to track)

더 구체적으로 말하면, "현재 어떤 지점에도 없습니다"라는 메시지가 걱정됩니다. git checkout 은 여기에 아무 것도하지 않는 것 같습니다 ... 그 명령의 전체 목적이 나를 지점에 두는 것이 아닌가? 어떻게하면 다시 분기로 돌아가서 커밋 / 푸시 할 수 있습니까?


Answer #1

git status 의 출력은 작업 디렉토리가 깨끗하다는 것을 나타냅니다. 좋은.

자, 달리기로

git checkout origin/web-zach

origin/web-zach 라는 원격 추적 브랜치를 체크 아웃하려고 시도하고 있습니다. 그것은 origin 라는 원격 저장소에 살고있는 해당 지점 인 web-zach 를 추적하는 특별한 유형의 지점입니다.

그러나 HEAD 참조 (지도에서 You-are-here 표시로 생각할 수 있음 ) 원격 추적 분기를 가리킬 수 없습니다 . "정상적인"로컬 브랜치 또는 커밋에 직접 적용됩니다. 원격 추적 분기를 체크 아웃하려고하면 HEAD 참조가 원격 추적 분기의 (즉, 원격 추적 분기가 가리키는 커밋)을 직접 가리 킵니다.

HEAD 가 "정상적인"로컬 브랜치를 가리 키지 않고 커밋을 직접 가리키면 소위 "detached-HEAD state"가됩니다. 그것은 세계의 끝이 아니지만 가능한 한 그 주에 착륙하는 것을 피하십시오 (최소한 Git 학습의 시작 부분에서) 당신에게 놀라운 일이 될 것입니다.

상황을 해결하려면 HEAD 를 일부 로컬 지점에 다시 연결해야합니다. 예를 들어 다음과 같이 로컬 브랜치를 만들고 체크 아웃 할 수 있습니다.

git checkout -b web-zach

HEADweb-zach 라고하는 새로 생성 된 로컬 지점을 가리키게됩니다.

그런 다음

$ git status
On branch web-zach
Untracked files:
  (use "git add <file>..." to include in what will be committed)
      .cordova/config.xml
      www/languages/pt/sounds/
nothing added to commit but untracked files present (use "git add" to track)

그 후에는 자유롭게 변경하고, 실행하고, 커밋 할 수 있습니다. ( origin 해당하는 원격 저장소에 대한 쓰기 권한이 있고 마지막 git fetch 이후 아무도 origin/web-zach 아무 것도 푸시하지 않은 경우) , 밀어 넣기, 사용하기

git push -u origin web-zach




remote-branch