可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am a new user of Git. I have forked a repository called Spoon-Knife (available for practicing forking with Git). Then, I cloned it locally by running
git clone https://github.com/rohinichoudhary/Spoon-Knife.git
This repository contains three branches, i.e.
master
,
test-branch
,
change-the-title
.
When I run git branch
, it only shows *master
, not the remaining two branches. And when I run
git checkout test-branch
I get the following error:
error: pathspec 'test-branch' did not match any file(s) known to git.
Why is this happening? How can I solve this problem?
回答1:
When I run git branch
, it only shows *master
, not the remaining two branches.
git branch
doesn't list test_branch
, because no such local branch exist in your local repo, yet. When cloning a repo, only one local branch (master
, here) is created and checked out in the resulting clone, irrespective of the number of branches that exist in the remote repo that you cloned from. At this stage, test_branch
only exist in your repo as a remote-tracking branch, not as a local branch.
And when I run
git checkout test-branch
I get the following error [...]
You must be using an "old" version of Git. In more recent versions (from v1.7.0-rc0 onwards),
If <branch>
is not found but there does exist a tracking branch in
exactly one remote (call it <remote>
) with a matching name, treat [git checkout <branch>
] as
equivalent to
$ git checkout -b <branch> --track <remote>/<branch>
Simply run
git checkout -b test_branch --track origin/test_branch
instead. Or update to a more recent version of Git.
回答2:
My friend, you need to create those corresponding branches locally first, in order to check-out to those other two branches, using this line of code
git branch test-branch
and
git branch change-the-title
then only you will be able to do git checkout to those branches
Also after creating each branch, take latest changes of those particular branches by using git pull origin branch_name as shown in below code
git branch test-branch
git checkout test-branch
git pull origin test-branch
and for other branch named change-the-title run following code =>
git branch change-the-title
git checkout change-the-title
git pull origin change-the-title
Happy programming :)
回答3:
The modern Git should able to detect remote branches and create a local one on checkout.
However if you did a shallow clone (e.g. with --depth 1
), try the following commands to correct it:
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
git fetch --all
and try to checkout out the branch again.
Alternatively try to unshallow your clone, e.g. git fetch --unshallow
and try again.
See also: How to fetch all remote branches?
回答4:
You can also get this error with any version of git if the remote branch was created after your last clone/fetch and your local repo doesn't know about it yet. I solved it by doing a git fetch
first which "tells" your local repo about all the remote branches.
git fetch
git checkout test-branch
回答5:
just follow three steps, git branch problem will be solved.
git remote update
git fetch
git checkout --track origin/test-branch
回答6:
Solution:
To fix it you need to fetch first
$ git fetch origin
$ git rebase origin/master
Current branch master is up to date.
$ git checkout develop
Branch develop set up to track remote branch develop from origin.
Switched to a new branch ‘develop’
回答7:
This error can also appear if your git branch is not correct even though case sensitive wise.
In my case I was getting this error as actual branch name was "CORE-something" but I was taking pull like "core-something".
回答8:
Try cloning before doing the checkout.
do git clone "whee to find it" then after cloning check out the branch