git rm --cached and fatal: pathspec
For the issue in the question title, you can generally solve it this way:
git rm --cached *
fatal: pathspec 'blah' did not match any files
git ls-files
That will list the files git does have in its index, and you can then remove them explicitly one by one. If for example it lists img/blah.jpg
:
git rm --cached img/blah.jpg
This will solve the pathspec error in the more general case, whether it's a branching issue as it was in the other answer here, or a new .gitignore entry, or a result of using 2 repos in the same dir, etc.
So, the solution is this:
The file is untracked in this current branch B
But it exists in the branch we are trying to check out, branch A, so we get a warning that the file in our current working tree will be overwritten (even though we aren't tracking it)
So:
delete the file in your existing directory (I just moved it somewhere out of the working tree initially to be safe) of branch B
check out the branch you want - i.e. branch A
Remove it from branch A using something like this:
git rm --cached app.xcodeproj/project.xcworkspace/xcuserdata/u.xcuserdatad/UserInterfaceState.xcuserstate
Note: Fwiw, Branch A was my master branch. Branch B was my dev branch.