Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Trying to set up a simple git-daemon on a linux server, and talk to it from a windows box.

On linux server:

  1. Make a folder /home/foo/bar
  2. CD to /home/foo/bar
  3. do a git --bare init here
  4. Do a touch git-daemon-export-ok
  5. CD to /home/foo
  6. Run the command git-daemon --verbose --reuseaddr --base-path=/home/foo --enable=receive-pack

On Windows Client w tortoise Git

  1. Do git.exe clone --progress -v "git://servername/bar" "C:\source\myFolderName" (works)
  2. Create file a.txt, add it to git, and commit (works)
  3. Do a git.exe pull "origin" master and then get fatal: Couldn't find remote ref master (makes sense, master isn't there yet)
  4. Do a git.exe push "origin" master:master and tortoise hangs forever without do anything

I realize why I can't pull from master yet on the remote branch.. but why can't I push my first commit into the remote repo? #4 really should work. Tried it both with tortoise and the mysysgit command line, both cases I hang forever. What am I missing? Server has no useful log

share|improve this question

migrated from May 14 '10 at 21:45

This question came from our site for professional and enthusiast programmers.

Does pushing to empty repository works if it is done via SSH? Does pushing via git-daemon works if there is at least one commit in destination repository? – Jakub Narębski May 14 '10 at 23:55
SSH works fine. I can push and pull all day long. But trying to access the same thing with git-daemon, all I get is the forever-hang. – bwawok May 17 '10 at 14:36
As an alternative I'm currently using:… - Also allows push and pull but (AFAIK) requires a per repository configuration setting – Kevin van der Velden Jun 10 '11 at 14:23
up vote 0 down vote accepted

Unfortunately this is probably a bug in msysgit

As of right now there is a workaround (not in the main branch I think) but no true fix.

share|improve this answer

I tend to access repositories read/write from my server using:

git remote add

Which is git over ssh, not via git daemon. You could use this configuration provided user@server has access to the repository.

Some other things you can do with this:

  • Create a user called git with a shell /usr/bin/git-shell. The user will only be able to perform git operations if you do this - ssh won't work.
  • Create a /home/git/.ssh/authorized_keys file which contains ssh keys that can connect. Any keys added here will let you commit, so you can add several different users' keys.

This setup lets you control who can commit whilst letting anyone clone via the efficient git:// protocol.

However, if you do want to receive packs, I think the correct command is:

git-daemon --verbose --reuseaddr --export-all --base-path=/home/foo --enable=receive-pack

As per this stack overflow post.

share|improve this answer
I don't have root on this server, and I can't make users. Need to get git-daemon to work, not use ssh and proper users. Only difference from this to my git command, is the --export-all.. but since I am already doing touch git-daemon-export-ok, it doesn't help :*( – bwawok May 14 '10 at 22:03

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.