Over the past several weeks I’ve been working on a secret Erlang project that will allow us to grow GitHub in new and novel ways. The project is called egitd and is a replacement for the stock git-daemon that ships with git. If you’re not familiar, git-daemon is what has, until today, served all anonymous requests for git repositories. Any time you used a command like git clone git://github.com/user/repo.git you were being served those files by git-daemon.
The reason we need egitd is for flexibility and power. We need the flexibility to map the repo name that you specify on the command line to any disk location we choose. git-daemon is very strict about the file system mappings that you are allowed to do. We also need it so that we can distinguish and log first-time clones of repos. Keep an eye out (down the road) for statistics that show you exactly how many times your public repo has been cloned!
Another benefit of coding our own git server is enhanced error messages. I can’t even begin to tell you how many people have come to us complaining about the following error which is caused by trying to push to the public clone address:
fatal: The remote end hung up unexpectedly
With egitd we can inject reasonable error responses into the response instead of just closing the connection and leaving the user bewildered. Behold!
fatal: protocol error: expected sha/ref, got ' *********' You can't push to git://github.com/user/repo.git Use git"github":http://github.com/github.com:user/repo.git *********'
Still a little crufty, but until we can get something useful into core git, it’s the best we can do and should help many people as they learn git and get over some of the confusing aspects.


So if we combine your hidden statistics and your configurable error messages, one day I might see something like the following:
@drnic Who told you we were planning that?
Wow!
So now we need new categories on Working with Rails:
We already have a “Biggest Tool” award, but I don’t think the winners’ names will be leaving our Campfire.
Awesome! Github itself is an awesome humane interface on top of git (whose cli ui leaves a lot to be desired from a usability standpoint). Fixing up the daemon to be more humane is the missing key. Major kudos.
If you found this page because you were googling for the error above, you can fix it by editing the url field in .git/config to what the error message says: git@github.com:user/repo.git.
I am a newbie to git, I installed git on my windows using Cygwin, and successfuly uploaded git files to git hub repository. Now when I try to do the same, with other windows machine, it gives me the errror you mentioned above Here are my commands >git config — user.email ‘mark@gmail.com’ > git add HELLO > git commit – m ‘second commit’ >git status //shows the status as clean >git remote add origin git@github.com:mark/website.git falta : remote origin already exists >git push origin master // And I get the following error fatal: protocol error: expected sha/ref, got ’ *********’ You can’t push to git://github.com/user/repo.git Use git@github.com:user/repo.git
I have created the public key and added to the github, but using the same userName and email in global config, is that the error or some else.
Thanks in advance
Try: > git remote rm origin > git remote add origin git@github.com:username/project.git
I got some errors in output when I did the ‘rm’ and then later when I did the push, but it seemed to work anyway
> fatal: protocol error: expected sha/ref, got ‘
The following error is caused by wrong repository cloning. On your project page there are two links, one is public and the other one is for contributors: Public Clone URL: git://github.com/xxx/yyy.git Your Clone URL: git@github.com:xxx/yyy.git So use the second one.
I appreciate the Comments.... I will admit to being a "cookbook" git user .... look up commands for what I want to do... But using git too infrequently to master all the kinks and turns...
I ran into this error. And I searched to find how to deal with it.
I found the original article really ... funny? Is that the word? .... since he managed to insult those new to git who get this error message, implying that they [a group that includes myself] are tools, as they [like myself] thrash about with this error without understanding what it suggests. And yet the author never bothers to actually explain what they [again, including myself] are supposed to do about it.
Seriously.
What a tool (and I don't mean us newbie users....)
Thankfully, those that comment are not so blind as to why people might end up here, and provided the little hints required to properly use the information provided by the message to solve the problem, i.e. "editing the url field in .git/config " as jwinter pointed out.
Opps. The "tool" guy was the first commenter.... my mistake. However, criticism that that the article lacks any description of what to do, but rather concentrates on describing the implementation details of the problem still stands.
@brondsem You are right
$ git remote rm origin $ git remote add origin git@github.com:username/project.git I did and i am successfully pushing it .
Its great man .
@mojombo Please edit the post and add this as one solution . Thanks