힘내 체크 아웃 : 경로 업데이트는 분기 스위칭과 호환되지 않습니다


467

내 문제는 분기를 전환 할 때 치명적인 Git 오류 와 관련이 있습니다.

명령을 사용하여 원격 지점을 가져 오려고합니다.

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

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

치명적 : git checkout : 경로 업데이트는 스위칭 브랜치와 호환되지 않습니다.
커밋으로 해결할 수없는 'origin / remote-name'을 체크 아웃하려고 했습니까?

수동으로 분기를 만든 다음 원격 분기를 당기면 새 복제본을 만들고 분기를 체크 아웃하는 것처럼 작동합니다.

내가 작업하는 리포지토리에서 왜 작동하지 않습니까?


1
해당 명령의 첫 번째 인스턴스 (오류 메시지 트리거) 이후 변경된 내용은 무엇입니까?
VonC

git init git fetch git fetch git : //blabla.com/dir1/Project.git

답변:


739

로컬 git repo가 ​​아직 모르는 원격 지점을 체크 아웃하려고 할 때 이것이 발생한다고 생각합니다. 시험:

git remote show origin

체크 아웃하려는 원격 지점이 "추적 된 원격 지점"이 아닌 "새 원격 지점"에있는 경우 먼저 가져와야합니다.

git remote update
git fetch

이제 작동해야합니다.

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

7
이것은 위의 임의적 인 대답이 아니라 문제를 해결했습니다.
Jessedc

21
해당 저장소의 모든 브랜치를 가져 오려면 "git fetch REPOSITORY_NAME"이어야합니다.
Mike Thomsen

1
반드시 그런 것은 아닙니다. git fetch모든 원격 저장소에서 모든 분기를 가져옵니다.
Michael Grinich

4
git fetch origin / branchname은 git fetch와 동일 하지 않습니다 . 전자는 단순히 git remote show origin을 통해 보이는 열에 "new (다음 페치가 remotes / origin에 저장 됨)"를 표시합니다.
Alexander Kellett

7
명시 적으로 추가 한 ( 원본 이외의 다른 ) 원격 장치에 대해이 작업을 수행하려는 경우 git remote update가져 오기에서 해당 원격 장치를 가져 오기 전에 수행 해야합니다. 그렇지 않으면 다음과 같은 메시지가 표시 Did you intend to checkout 'upstream-repo/master' which can not be resolved as commit?됩니다. 답변에이 내용을 추가하고 원본에만 적용되는 동일한 답변을 읽을 수있는 시간을 절약하십시오.
Bruno Bronosky

150

대체 구문

git fetch origin remote_branch_name:local_branch_name

12
이것은 나를 위해 일했습니다. 내 원격 지점 이름이 원본이 아닙니다. 보드카를 마시면서 그 차이가 있는지 모르겠습니다.
미안

13
이것은 단지 다른 구문이 아니라 때 자식 체크 아웃 -b branch_name 원산지 / branch_name이 작동하지 않음 사용할 수 있습니다
codercake

1
또한 "git checkout --track origin / remote-branch"를 실행할 때 문제가 해결되었습니다. 원래 수정 이전의 OP와 동일한 오류가 발생했습니다. 감사!
kakyo

1
검증 된 답변도 실행 한 후 나를 위해 일했습니다.
AsTeR

2
예, --depth원본 클론 의 한정자가 여기에 결함이 있다고 생각합니다 . 나는 성공 git fetch remote_branch_name:local_branch_name했지만 다른 모든 조언은 실패했습니다.
John Kelleher

46

성공하지 않고이 스레드에서 읽을 수있는 대부분을 시도한 후에이 오류가 발생했습니다. "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/*

트릭을 했어


4
실제로 이상한 구성입니다. git에게 원격에서 마스터 분기 만 가져 오도록 지시합니다.
Ikke

3
내가 할 수 있다면 나는 그것을 10 번 투표 할 것입니다! -이것은 복제 할 때 새로운 자식이하는 것 같습니다
mpapis

2
나는 같은 문제가 있었는데, 나를 미치게했다. 원격 지점을 보지 못하는 사람은 이것을 확인하십시오 !!
Carlos Granados

답변 주셔서 감사합니다 :)
Sacha

마음 = 날려! 감사합니다!
Chiranjib

12

이것이 도움이되는지 또는 질문과 정확히 관련이 있는지 확실하지 않지만 원격 저장소에서 단일 분기 만 가져오고 체크 아웃하려고 하면 다음 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

11

위의 어느 것도 나를 위해 일하지 않았습니다. 내 상황이 약간 다르며 원격 지점이 원산지 가 아닙니다 . 그러나 다른 저장소에 있습니다.

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

팁 : 다음 출력에 원격 분기 git branch -v -a가 표시되지 않으면이를 확인할 수있는 방법이 없습니다.

1.7.5.4 작업 확인


arf, VirtualStaticVoid가 동일한 솔루션을 가지고 있음을 인식하십시오!
Olivier Refalo

+1 for git branch -v -a: fetch = +refs/heads/*:refs/remotes/master/*리모컨이 호출 되었는데도 잘못 구성된 리모컨이 upstream있습니다.
keflavich

7

나를 위해 일한 것은 다음과 같습니다.

git fetch

원격의 모든 분기에 대한 모든 심판을 컴퓨터로 가져옵니다. 그런 다음 할 수 있습니다

git checkout <branchname>

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


4

remote-name이라는 원격 브랜치가 없다고 생각하지만 실수로 origin / remote-name이라는 로컬 브랜치를 만들었습니다.

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

자식 분기 원산지 / 원격 이름

따라서 origin / remote-name이라는 로컬 브랜치를 생성합니까? 이 명령을 입력하십시오 :

자식 체크 아웃 출발지 / 원격 이름

당신은 볼 수 있습니다 :

지점 "원산지 / 원격 이름"으로 전환

즉, 이름이 잘못 지정된 현지 지점이거나

참고 : 현지 지점이 아닌 "원산지 / 재가공"으로 이동
이 체크 아웃에서 새 지점을 만들려면 그렇게 할 수 있습니다
checkout 명령과 함께 -b를 다시 사용하여 (현재 또는 이후) 예:
  자식 체크 아웃 -b 

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


3

그것은 직관적이지 않지만 이것은 나를 위해 잘 작동합니다 ...

  mkdir remote.git & cd remote.git & git init
  git remote add origin $REPO
  git fetch origin $BRANCH:refs/remotes/origin/$BRANCH        

그런 다음 git branch --track 명령을 실행하십시오 ...

  git branch --track $BRANCH origin/$BRANCH

2

나를 위해 오타가 있었고 내 원격 지점이 존재하지 않았습니다.

git branch -a원격 지점을 나열하는 데 사용


1

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

즉, 관련된 문제 :

  • Git의 구버전
  • 해야 호기심 체크 아웃 구문 : git checkout -b [<new_branch>] [<start_point>]와, [<start_point>]a의 이름을 언급이되는 새로운 지점을 시작하고, 커밋 'origin/remote-name'이 없습니다.
    ( git branchstart_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 checkout -b local-name remote / remote-branch는 실제로 작동합니다
Ikke

1
흥미롭게도, 해당 명령의 첫 번째 인스턴스 (오류 메시지 트리거) 이후 변경된 내용은 무엇입니까?
VonC

1

눈보라가 풀에 있었지만 열수 시간을 가져온 후에도 여전히 리모컨이 표시되지 않았습니다. 아웃 턴 --tags 옵션을 부여해서는 안 git remote add어떤 이유. git fetch가 참조를 생성하도록 .git / config에서 수동으로 제거 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.