I'm not sure why I'm unable to checkout a branch that I had worked on earlier. See the commands below (note: co
is an alias for checkout
):
ramon@ramon-desktop:~/source/unstilted$ git branch -a
* develop
feature/datts_right
feature/user_controlled_menu
feature/user_controlled_site_layouts
master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/feature/datts_right
remotes/origin/master
ramon@ramon-desktop:~/source/unstilted$ git co feature/user_controlled_site_layouts
error: pathspec 'feature/user_controlled_site_layouts' did not match any file(s) known to git.
I'm not sure what it means, and I can't seem to find anything I can understand on Google.
How do I checkout that branch, and what may I have done to break this?
UPDATE:
I found this post, and running git show-ref
gives me:
97e2cb33914e763ff92bbe38531d3fd02408da46 refs/heads/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/heads/feature/datts_right
11a90dae8897ceed318700b9af3019f4b4dceb1e refs/heads/feature/user_controlled_menu
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/heads/master
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/HEAD
e7c17eb40610505eea4e6687e4572191216ad4c6 refs/remotes/origin/develop
c438c439c66da3f2356d2449505c073549b221c1 refs/remotes/origin/feature/datts_right
c889b37a5ee690986935c9c74b71999e2cf3c6d7 refs/remotes/origin/master
23768aa5425cbf29d10ff24274adad42d90d15cc refs/stash
e572cf91e95da03f04a5e51820f58a7306ce01de refs/tags/menu_shows_published_only
429ebaa895d9d41d835a34da72676caa75902e3d refs/tags/slow_dev
UPDATE on .git
directory (user_controlled_site_layouts
is in the refs/heads/feature folder
):
$ ls .git/refs/heads/feature/
datts_right user_controlled_menu user_controlled_site_layouts
$ cat .git/refs/heads/feature/user_controlled_site_layouts
3af84fcf1508c44013844dcd0998a14e61455034
UPDATE on git show 3af84fcf1508c44013844dcd0998a14e61455034
$ git show 3af84fcf1508c44013844dcd0998a14e61455034
commit 3af84fcf1508c44013844dcd0998a14e61455034
Author: Ramon Tayag <xxx@xxxxx.xxx>
Date: Thu May 12 19:00:03 2011 +0800
Removed site layouts migration
diff --git a/db/schema.rb b/db/schema.rb
index 1218fc8..2040b9f 100755
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20110511012647) do
+ActiveRecord::Schema.define(:version => 20110503040056) do
create_table "attachments", :force => true do |t|
t.string "name"
@@ -205,15 +205,6 @@ ActiveRecord::Schema.define(:version => 20110511012647) do
t.integer "old_id"
end
- create_table "site_layouts", :force => true do |t|
- t.string "name"
- t.text "description"
- t.text "content"
- t.integer "site_id"
- t.datetime "created_at"
- t.datetime "updated_at"
- end
-
create_table "site_styles", :force => true do |t|
t.text "published"
t.datetime "created_at"
git checkout refs/heads/user_controlled_site_layouts
?
git branch -a
but not in git show-ref
. Does the file .git/refs/heads/feature/user_controlled_site_layout
actually exist? If so, what does cat .git/refs/heads/feature/user_controlled_site_layout
give?
Try git fetch
so that your local repository gets all the new info from Github. It just takes the information about new branches and no actual code. After that, the git checkout
should work fine.
You basically see the branch, but you don't have a local copy yet!...
You can simply fetch and then checkout to the branch, use the command below to do that:
git fetch
git checkout <Branch name here>
I also created the image below for you to share the differences, look at how fetch works, and also how it's different to pull:
https://i.stack.imgur.com/zBb51.png
I was getting this error when I tried to checkout new branch:
error: pathspec 'BRANCH-NAME' did not match any file(s) known to git.
When I tried git checkout origin/<BRANCH-NAME>
, I got the detached HEAD:
(detached from origin/)
Finally, I did the following to resolve the issue:
git remote update
git fetch
git checkout --track origin/<BRANCH-NAME>
git checkout --track origin/staging fatal: git checkout: --track and --no-track require -b
git version 1.5.6.5
git fetch
alone didn't work, but this solution (that includes remote update
and track origin
works perfectly.
I got this error for a branch that was remote and had no local tracking branch. Even though I'm certain I've checked out remote branches via a simple
git checkout feature/foo
in the past, to get around this error I had to
git checkout -t -b feature/foo origin/feature/foo
I have no idea what I did to get myself into that situation either.
fetch = +refs/heads/*:refs/remotes/origin/*
line to match the new remote name. LOL. Maybe this happened to makandra? because after fixing it, checking out branch once again gets it from origin, even though I have many remotes.
If you deleted a branch with git branch -D yourbranchname
and pulled/cloned again your repo, you may need to create your local branch again.
Try:
git checkout -b yourbranchname
I have the same questions, and got some information from this link: git fetch doesn't fetch all branches
So now, I may not sure how this situation happened, at least we can solve it:
Step 1. Check your "remote.origin.fetch" setting, should be like this
$ git config --get remote.origin.fetch +refs/heads/private_dev_branch:refs/remotes/origin/private_dev_branch
Step 2. Change "remote.origin.fetch" to fetch everything
$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" $ git config --get remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
Then, you can try "git pull" (maybe "git fetch origin" also works but I didn't try) to get all the branch.
I had the same issue for one of my branch.
These commands work for me.
git fetch --all
git checkout <branch-name>
Git Windows users beware - without the --icase-pathspecs
or GIT_ICASE_PATHSPECS = 1
env var setting, that git pathspecs will be case-sensitive, in which case
git checkout origin/FooBranch "Some/Path/To/File.txt"
is not the same as
git checkout origin/FooBranch "some/path/to/file.Txt"
--icase-pathspecs
parameter needs to come first or at least before -C <path>
If branch name and you dont have any uncommited file, then try this
git fetch && git checkout <branch name>
I faced the issue while switching my branch.
I did a git pull on the current branch and then tried to checkout the new one and it worked
git pull // on your old branch git checkout <new_branch>
git pull
do more than pull the current branch?
Just do a git fetch origin <branchName>:<branchName>
.
This will fetch and create a local copy of the same hence now you can
checkout into it git checkout <branchName>
git branch -u origin/<branchName>
after doing your checkout.
git push --set-upstream origin <branchName>
in order to be able to push changes.
git pull origin <branchName>
worked for me.
git pull
That simply fixed it for me :)
git checkout master path/to/some/file.ext
, but my LOCAL master wasn't in sync with remote master because I had been on a development branch for a long time.
I fixed it by modifying my git config file Check your the config file in your git directory - .git\config
It previously had
[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/develop:refs/remotes/origin/develop
I fixed by modifying it to
[remote "origin"]
url = http://git.xyz.com/abc-group/pqr.git
fetch = +refs/heads/*:refs/remotes/origin/*
Notice the head was pointing to only one branch, so it couldnt find the reference to other existing branches, I changed it to * so it checks everything in origin.
I got this error when trying to checkout a branch via:
git checkout branchX
which I had not checked out before. It only worked when explicitly stating the remote:
git checkout --track origin/branchX
The reason for this was, that I had 2 different remotes (origin + sth. else) configured in git config. As I didn't need the second remote, I removed it and voilá, it worked. The alternative to set the default remote via:
checkout.defaultRemote=origin
did not work for me
git rm -f .git/index.lock
and then correctly ran rm -f .git/index.lock
because I was getting fatal: Unable to create '/home/sagemaker-user/qubed2/.git/index.lock': File exists.
from git gui shenanigans
I got the same problem because I used git clone --depth=1
, which implies --single-branch
.
Do a completed git clone
will fix it.
I got this when I did the following:
Used IntelliJ IDE, connected to git
Created a new file, and added to git
Renamed the new file
When I tried to check in the directory, I got this error.
To fix:
I opened the repo in git extensions. I saw that the file (with the old name) was staged. But since it didnt exist anymore, it could not be committed.
I simply unstaged this file.
Then I re-added the file (this time correctly named) into git and committed without errors.
I had this problem today I was trying to git checkout foo
and got error: pathspec 'foo' did not match any file(s) known to git.
It turns out I was in the wrong repo. So lesson learned: check which repo you're looking at before freaking out.
I copied remote origin url
from another .git/config
file, doing so my new .git/config
file was missing following line in [remote "origin"]
section
fetch = +refs/heads/*:refs/remotes/origin/*
Adding above line fixed error: pathspec 'master' did not match any file(s) known to git.
First, checkout parent branch.Then type
git fetch --all --prune
git checkout <your branch>
Hope it helps!.
--all
-- I was receiving the error because I had 2 remotes, and one had fetched the new branch while the other hadn't. Either remove the second remote, or do git fetch --all
I encountered this same issue when I was first playing around with git. When attempting my first commit...
git commit -m 'first commit!'
I got the error mentioned by the OP...
error: pathspec 'commit!'' did not match any file(s) known to git.
I thought I might have been confusing git by using a keyword in the commit message, so I tried a few other words and received the same error.
Finally I used double-quotes in the message...
git commit -m "first commit!"
This turned out to be successful...
[master (root commit) 0000000] first commit!
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dummyDoc.txt
Well, I had few deleted branches like dev/{feature_branch} and when I created a new branch dev and tried to checkout, I was getting the same issue. I ran the below command
git fetch -p
and worked for me.
On Windows OS by default git is instaled with
core.ignorecase = true
This means that git repo files will be case insensitive, to change this you need to execute:
\yourLocalRepo> git config core.ignorecase false
you can find this configuration on .git\config file
I had made a silly mistake of not providing -m flag while committing (lol happens)
git commit -m "commit message in here"
I had the same issue.. I thought I had branch named foo
when I try to:
git checkout foo
I was getting:
error: pathspec 'foo' did not match any file(s) known to git.
Then I tried the full branch name:
git checkout feature/foo
then worked for me.
In my case I have TWO branch 1) master(which is for live server) 2) dev(test server). I had set multiple remote to push code on respective server. When I tried to switch branch I got the error like error: pathspec 'master' did not match any file(s) known to git.
You can see them by git remote -v
. I had removed other remote except origin
remote by git remote remove <remote-name>
Then git fetch
Now I am able to checkout branch by git checkout <branch-name>
.
Three steps
Write a command 'git fetch' then you will see the desired branch then switch to the relevant branch 'git checkout 'your_branch_name' then write a command 'git pull origin your_desired_branch_name'
If it happens on Windows, it is probably the filename case issue.
I had this error today - I've created new file, added to GIT, then I changed one letter in filename from lower to upper and then I couldn't to anything - commit, revert, delete file from repo.
The only solution I found was changing the filename again back to exact same case when I added this file to GIT, then doing GIT revert to remove this file from GIT, then changing filename again as I want. After those changes I could commit to repo and then push without any problem.
git mv
. Guess you've done it this way, because doing it via my IDE (IntelliJ PhpStorm) failed for me...
Happened to me after renaming an uncommitted file in Android Studio.
Git seemed to have the old version in its repository, even if it didn´t exist anymore.
fetch, pull, checkout, add all and so on did not help in my case!
So I opened the Git GUI of TortoiseGit which showed me the exact file that caused trouble.
Afterwards I deleted the file from the repository with
git rm -r --cached /path/to/affected/file
and the problem was gone
I had a different root cause
I had a script that basically searches all branches matching jira issue key in the for "PRJ-1234" among all branches to execute a git branch checkout command on the matching branch
The problem in my case was 2 or more branches shared the same jira key and hence caused my script to fail with the aforementioned error
By deleting the old unused branch and making sure only a single branch had the jira key reference fixed the problem
Here's my code in case someone wants to use it
git remote update
git fetch --all --prune
git branch -r --list *$1* | xargs git checkout --force
save this as switchbranch.sh
Then use it from the terminal ./switchbranch.sh PRJ-1234
check whether it is not a typo in the target file name. I was attempting to stage by typing
git add includes/connection..php
But I did not notice that I was using two dots But then I type
git add includes/connection.php
It works
In my case I had renamed a file changing the case of the file, i.e. SomeFile.js -> someFile.js
I think that was related to the problem. Doing a git fetch didn't fix the issue.
I moved the files out of my project, did a fetch, and did a push without them. Then I did a fetch, added them back, and did a push, and it worked. I don't know if all those steps were needed, but it did ultimately work.
Success story sharing
git fetch
is useful when you need to synchronize your local repository with the remote repository, but you don't want to merge the changes into your working folder.git checkout Branch
does not work. With multiple remotes just the Branch name is ambiguous and requires the specification of remote/branch. The commandgit checkout -b branch remote/branch
works in that scenario.git fetch
could do the job. But it may fail to get all the branches from remote. You'd need to set the fetch match pattern.git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
refer: stackoverflow.com/questions/11623862/…