srboisvert
srboisvert

Reputation: 12749

git Warning: remote HEAD refers to nonexistent ref, unable to checkout

I'm trying to setup gitosis according to the instructions here.

It works fine from my remote machine so the server seems to be setup fine but I'd also like to be able to do development on my gitosis server machine from a different user account (not the git user created in the gitosis setup).

I've copied the key and modified the gitosis.conf so that the other user account has access but when I try to clone it seems to work except at the end it says:

git Warning: remote HEAD refers to nonexistent ref, unable to checkout

and I end up with an empty directory except for .git

I've google for this a bit but have no real insight into what the problem is

Upvotes: 41

Views: 53175

Answers (7)

Dmitry O
Dmitry O

Reputation: 1

I use tortoiseGit and I'm not aware of how to use git via the command line. So I always wonder how I can avoid such problem in my tortoise. So maybe I am not alone. I fixed the problem this way:

  • clone the remote repo
  • right click on the root folder and from there choose an existing branch

Im my case, there was only a branch "dev", without master. So when I tried to clone there was no local branch to check out and as soon as I switched to "dev" it was able to check out all the content successfully. Hope that will be helpful.

Upvotes: 0

Boopathi Rajaa
Boopathi Rajaa

Reputation: 4729

One more possible cause for this warning might be that the master branch in the repository is missing (OR) the repository does NOT use a master branch. If this is the case, just don't worry about the Warning!, use

git checkout <some_existing_branch>

The warning is because, by default, after the pull git tries to checkout into the master branch.

Upvotes: 18

EvdB
EvdB

Reputation: 1769

If you are trying to clone over http:// note that you need a git newer than 1.6.6 - otherwise you should use a git:// based URI.

Upvotes: 0

Cristian Vrabie
Cristian Vrabie

Reputation: 4068

Had a similar problem. It seems that on my first push I did git push origin master:/refs/heads/master instead of git push origin master:refs/heads/master (notice the extra slash). This caused my master to be placed (in the remote repository) at refs/heads/refs/heads/master instead of refs/heads/master. The fix was to reorganize the folders on remote and re-push.

Upvotes: 2

srboisvert
srboisvert

Reputation: 12749

I found out what was going wrong. The problem was that I wasn't paying attention to the warnings when I was pushing to my gitosis server so I didn't realize that I wasn't pushing a particular branch. I had assumed it would just push the current but that isn't the case until you set:

git config push.default current

Upvotes: 25

Greg Bacon
Greg Bacon

Reputation: 139471

Keep it simple. Add to gitosis authorization and SSH key for the user account on your server and clone as usual:

user@server$ git clone git@server:repo.git

Upvotes: 1

Michael Krelin - hacker
Michael Krelin - hacker

Reputation: 143081

  1. Do the git branch -r and git checkout -b master <remotebranchofinterest>

  2. Check the HEAD file in remote .git.

  3. Check if somebody already asked the question: here

Upvotes: 22

Related Questions