git 브랜치 길드 체크 아웃:경로 업데이트가 분기 변경과 호환되지 않습니다.




merge remote tracking branch (9)

내 문제는 지점을 전환 할 때 치명적인 힘내 오류 와 관련이 있습니다.

명령을 사용하여 원격 분기를 가져 오려고합니다.

git checkout -b local-name origin/remote-name

하지만이 오류 메시지가 나타납니다.

치명적 : git checkout : 경로를 업데이트하는 것이 분기를 변경하는 것과 호환되지 않습니다.
커밋으로 해결할 수없는 'origin / remote-name'을 체크 아웃하려고 했습니까?

수동으로 분기를 만든 다음 원격 분기를 가져 오는 경우 새 복제본을 만들고 분기를 확인하는 것처럼 작동합니다.

왜 내가 작업하는 저장소에서 작동하지 않습니까?


나에게는 오타가 있었고 원격 지점은 존재하지 않았다.

원격 분기를 나열하려면 git branch -a 를 사용하십시오.


나는 이것이 당신의 로컬 git repo가 ​​아직 알지 못하는 원격 브랜치를 체크 아웃 할 때 발생한다고 생각한다. 시험:

git remote show origin

체크 아웃하려는 원격 브랜치가 "새 원격 브랜치"아래에 있고 "추적 된 원격 브랜치"가 아닌 경우 먼저 원격 브랜치를 가져와야합니다.

git remote update
git fetch

이제 제대로 작동합니다.

git checkout -b local-name origin/remote-name

성공없이이 스레드에서 읽을 수있는 대부분을 시도한 후, 나는이 것을 우연히 발견했다 : "git branch -r"에 원격 브랜치가 나타나지 않는다.

.git / config 파일이 잘못되었습니다. 간단한 수정을 한 후 모든 지점이 나타났습니다.

가는 중

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/master:refs/remotes/origin/master

[remote "origin"]
    url = http://stash.server.com/scm/EX/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*

트릭을 했나요?


나를 위해 일한 것은 :

git fetch

어떤 원격지의 모든 지점에 대해 모든 refs를 컴퓨터로 가져옵니다. 그럼 내가 할 수있어.

git checkout <branchname>

그리고 그것은 완벽하게 작동했습니다. 상위 투표 응답과 비슷하지만 조금 더 간단합니다.


remote-name이라는 원격 브랜치가 없다고 의심하지만 origin / remote-name이라는 로컬 브랜치를 부주의하게 만들었습니다.

어떤 시점에서 입력 할 수 있습니까?

git branch origin/remote-name

따라서 origin / remote-name이라는 로컬 분기를 생성 하시겠습니까? 다음 명령을 입력하십시오.

git checkout origin/remote-name

다음 중 하나가 표시됩니다.

Switched to branch "origin/remote-name"

이는 실제로 잘못 명명 된 지역 지점이라는 것을 의미합니다.

Note: moving to "origin/rework-isscoring" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b 

이는 실제로 원격 지점이라는 것을 의미합니다.


귀하의 문제는이 다른 SO 질문 "체크 아웃 문제"에 연결될 수 있습니까?

즉 : 다음과 관련된 문제 :

  • 힘내 자의 옛날 버전
  • git checkout -b [<new_branch>] [<start_point>] , git checkout -b [<new_branch>] [<start_point>] 와 함께 새로운 분기를 시작할 커밋의 이름을 참조하는 ' git checkout -b [<new_branch>] [<start_point>] 'origin/remote-name' , 'origin/remote-name' 그게 아니야.
    ( git branch 는 원격 브랜치의 이름 인 start_point를 지원한다)

참고 : checkout.sh 스크립트의 내용은 다음과 같습니다.

  if test '' != "$newbranch$force$merge"
  then
    die "git checkout: updating paths is incompatible with switching branches/forcing$hint"
  fi

git checkout 구문과 같습니다. -b [] [remote_branch_name]은 분기의 이름을 바꾸고 새로운 분기의 새로운 시작점을 재설정하는 것으로, 이는 호환되지 않는 것으로 간주됩니다.


대체 구문,

git fetch origin remote_branch_name:local_branch_name

위의 어느 것도 나를 위해 일하지 않았다. 내 상황이 약간 다르다. 내 원격 지점이 원래 위치에 있지 않다. 하지만 다른 저장소에 있습니다.

git remote add remoterepo GIT_URL.git
git fetch remoterepo
git checkout -b branchname remoterepo/branchname

팁 : 다음 출력에서 ​​원격 브랜치가 보이지 않는 경우 git branch -v -a 체크 아웃 할 방법이 없습니다.

1.7.5.4에서 작업 확인


이것이 당신의 질문에 유용하거나 관련이 있는지는 확실치 않지만 원격 저장소에서 하나의 브랜치만을 가져오고 체크 아웃하려한다면 다음의 git 명령이 트릭을 수행 할 것입니다 :

url= << URL TO REPOSITORY >>
branch= << BRANCH NAME >>

git init
git remote add origin $url
git fetch origin $branch:origin/$branch
git checkout -b $branch --track origin/$branch




remote-branch