“Cannot update paths and switch to branch at the same time”

匿名 (未验证) 提交于 2019-12-03 02:47:02

问题:

I sometimes use the checkout -b option to create a new branch, check it out at the same time and set up tracking in one command.

In a new environment, I get this error:

$ 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? 

Why does Git not like it? This used to work with the same repo.

回答1:

'origin/master' which can not be resolved as commit

Strange: you need to check your remotes:

git remote -v 

And make sure origin is fetched:

git fetch origin 

Then:

git branch -avv 

(to see if you do have fetched an origin/master branch)



回答2:

FWIW: If you have a typo in your branchname you'll get this same error.



回答3:

You can get this error in the context of, e.g. a Travis build that, by default, checks code out with git clone --depth=50 --branch=master. To the best of my knowledge, you can control --depth via .travis.yml but not the --branch. Since that results in only a single branch being tracked by the remote, you need to independently update the remote to track the desired remote's refs.

Before:

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

The fix:

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

After:

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


回答4:

This simple thing worked for me!

If it says it can't do 2 things at same time, separate them.

git branch branch_name origin/branch_name   git checkout branch_name 


回答5:

You could follow these steps when you stumble upon this issue:

  1. Run the following command to list the branches known for your local repository.

git remote show origin

which outputs this:

 remote origin   Fetch URL:    Push  URL:    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. After verifying the details like (fetch URL, etc), run this command to fetch any new branch(i.e. which you may want to checkout in your local repo) that exist in the remote but not in your local.

As you can see the new branch has been fetched from remote.
3. Finally, checkout the branch with this command

It is not necessary to explicitly tell Git to track(using --track) the branch with remote.

The above command will set the local branch to track the remote branch from origin.



回答6:

For me I needed to add the remote:

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

then I could fetch

git fetch myRemoteName 


回答7:

First you need to Fetch the remote (the specific branch), then you can create a local br and track it with that remote branch using your command (i.e. checkout with -b and --track).



回答8:

You should go the submodule dir and run git status.

You may see a lot of files were deleted. You may run

  1. git reset .

  2. git checkout .

  3. git fetch -p

  4. git rm --cached submodules //submoudles is your name

  5. git submoudle add ....



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!