“경로를 업데이트하고 동시에 지점으로 전환 할 수 없습니다”


186

때로는 checkout -b새 지점을 생성하고 동시에 체크 아웃하고 하나의 명령으로 추적을 설정 하는 옵션을 사용합니다.

새로운 환경 에서이 오류가 발생합니다.

$ git checkout -b test --track origin/master
fatal: Cannot update paths and switch to branch 'test' at the same time.
Did you intend to checkout 'origin/master' which can not be resolved as commit?

Git이 왜 좋아하지 않습니까? 이것은 동일한 리포지토리에서 작동했습니다.


6
오류 메시지는 origin/master커밋 ID가 아니고 유효한 원격 분기가 아님을 알려줍니다 . git branch -r출력에 표시됩니까 ?
torek

그렇지 않았다. 복제하는 동안 모든 원격 지점을 확인하지 않은 것으로 나타났습니다.
marekful

답변:


199

origin/master커밋으로 해결할 수없는 ' '

이상 : 리모컨을 확인해야합니다.

git remote -v

그리고 origin가져 왔는지 확인하십시오 .

git fetch origin

그때:

git branch -avv

( origin/master브랜치를 가져 왔는지 확인하기 위해 )

마지막으로 혼란스러운git switch 대신 Git 2.23+ (2019 년 8 월)를 사용하십시오.git checkout

git switch -c test --track origin/master

11
내 명령에 오타가 있어이 오류가 발생했습니다. 리모컨의 철자를 정확하게 입력하지 않았습니다!
qix

2
새로운 지점이었고 로컬 리포지토리는 알지 못했습니다. 나는해야 pull했고이 명령이 효과가있었습니다.
coding_idiot

2
이 답변은 실제로 이상한 일이 있음을 보여 주었으므로 도움이되었습니다. 원격이 올바르게 설정되었지만 새 원격 지점은 단순히 가져 오지 않습니다. 깨끗한 디렉토리에서 리모컨을 복제하면 작동합니다. 내 .git디렉토리가 어떻게 손상 될 수 있습니까?
Konrad Rudolph

git remote -v이 오류를 반환했습니다. 치명적인 : 유효한 개체 이름이 아닙니다 : 'remote'.
카림 사미르

@KarimSamir 당신은 git remote -vgit repo에서 실행되는 것처럼 OS와 git 버전에 대해 별도의 질문을 할 수 있습니다.
VonC

79

FWIW : 지점 이름에 오타가있는 경우 이와 동일한 오류가 발생합니다.


4
누군가 누군가 Git 개발자들에게 이것에 대해 이야기하는 데 시간을 할애한다면 오류 메시지는 그다지 유익하지 않습니다;)
Scorchio

8
그래, 이건 내 문제이고, 난 내 지점 이름에 공백이 있었다
카림 사미르

여기에서, 나는 (추가 ) git checkout -b origin mybranch대신 시도 했습니다git checkout -b mybranchorigin
Guillaume Renoult

지점 이름을 복사하여 붙여 넣었으며 지점 이름 뒤에 공백이 있어이 오류가 발생했습니다.
learningKnight

orgin/my-branch대신 체크 아웃하려고했습니다 origin/my-branch. 하나를 그리워 i& 나는 오래 된 동맹국이 왜 돌아 가기를 거부하는지 이해하기 위해 잠시 동안 내 머리를 긁적. 실제로 오타가 문제였습니다.
DDM

55

예를 들어 기본적으로 코드를 체크 아웃하는 Travis 빌드와 같은 상황에서이 오류가 발생할 수 있습니다 git clone --depth=50 --branch=master. 내가 아는 한,를 --depth통해 제어 할 수 는 .travis.yml있지만 --branch. 그 결과 리모콘에서 단일 분기 만 추적하므로 원하는 리모콘 참조를 추적하도록 리모콘을 독립적으로 업데이트해야합니다.

전에:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

수정 :

$ git remote set-branches --add origin branch-1
$ git remote set-branches --add origin branch-2
$ git fetch

후:

$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/branch-1
remotes/origin/branch-2
remotes/origin/master

5
나를 위해 해결했습니다. 나는 얕은 --depth = 1 클론을 사용했고 이것이 분기를 전환하는 데 필요한 것입니다.
Sawtaytoes

1
Gah 네, 깊이 문제는 분명히이 오류를 발생시킵니다! 가능하다면, 깊이있는 것을 강조하기 위해 처음 몇 문장을 편집하는 것이 좋습니다.
Dubslow

19

이 간단한 일은 나를 위해 일했습니다!

동시에 두 가지 작업을 수행 할 수 없다고 표시되면 분리하십시오.

git branch branch_name origin/branch_name 

git checkout branch_name

실제 문제가 무엇인지 쉽게 알 수 있습니다
.

9

이 문제를 발견하면 다음 단계를 수행 할 수 있습니다.

  1. 다음 명령을 실행하여 로컬 저장소로 알려진 분기를 나열하십시오.

git remote show origin

이것은 이것을 출력합니다 :

 remote origin
  Fetch URL: <your_git_path>
  Push  URL: <your_git_path>
  HEAD branch: development
  Remote branches:
    development                             tracked
    Feature2                                tracked
    master                                  tracked
    refs/remotes/origin/Feature1         stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    Feature2     merges with remote Feature2
    development  merges with remote development
    master       merges with remote master
  Local refs configured for 'git push':
    Feature2     pushes to Feature2     (up to date)
    development  pushes to development (up to date)
    master       pushes to master      (local out of date)
  1. (URL 가져 오기 등) 세부 사항을 확인한 후이 명령을 실행하여 원격에 있지만 로컬에는없는 새 분기 (예 : 로컬 저장소에서 체크 아웃하려는 경우)를 가져옵니다.
» git remote update

Fetching origin
From gitlab.domain.local:ProjectGroupName/ProjectName
 * [new branch]      Feature3    -> Feature3

보시다시피 새 브랜치가 원격에서 가져 왔습니다.
3. 마지막 으로이 명령으로 지점을 체크 아웃하십시오.

» git checkout -b Feature3 origin/Feature3

Branch Feature3 set up to track remote branch Feature3 from origin.
Switched to a new branch 'Feature3'

원격으로 분기 를 추적 ( --track 사용 )하도록 Git에 명시 적으로 지정할 필요는 없습니다 .

위의 명령은 로컬 브랜치를 원점에서 원격 브랜치를 추적하도록 설정합니다.


4

지점에 공백이 있으면이 오류가 발생합니다.


1

나를 위해 리모컨을 추가해야했습니다.

git remote -add myRemoteName('origin' in your case) remoteGitURL

그런 다음 가져올 수 있습니다

git fetch myRemoteName

1

로컬 지점이 원격 지점을 추적하지 않기 때문에 발생합니다. ssasi가 말했듯이 다음 명령을 사용해야합니다.

git remote update
git fetch
git checkout -b branch_nameA origin/branch_nameB

나는 지금 내 문제를 해결했다 ....


0

먼저 Fetch원격지 (특정 지점)에 필요한 다음 로컬 br을 만들고 명령을 사용하여 해당 원격 지점으로 추적 할 수 있습니다 (예 : checkout-b 및 --track).


0

서브 모듈 dir로 가서을 실행해야합니다 git status.

많은 파일이 삭제 된 것을 볼 수 있습니다. 당신은 실행할 수 있습니다

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules // submoudles는 당신의 이름입니다

  5. git submoudle add ....


0

git remote update, git fetch, git checkout -b branch_nameA origin : branch_nameB 명령을 사용할 수 있습니다.

현지 지점으로 인해 원격 지점을 추적 할 수 없기 때문일 수 있습니다.

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