Git克隆工作正常,但git推并没有

我已经在Git服务器上创build了一个testinggit回购:

/var/cache/git/username/myGitRepo.git 

这是一个“光秃秃的”git回购。 文件的所有权属于这个“用户名”用户。 我可以在另一台Windows机器上克隆上面的Git仓库。

 git clone git://myhost/var/cache/git/username/myGitRepo.git 

回购克隆正确。 然后我可以进行本地提交,并尝试将更改返回到我的Git服务器:

 git push origin master 

但是,这给服务器上的权限错误:

 fatal: remote error: access denied or repository not exported: /git/username/myGitRepo.git 

我在回购目录中添加了魔术文件' git-daemon-export-ok '文件。 但我不断收到上述错误。

我甚至将chmod设置为/var/cache/git/username/myGitRepo.git 777

获取相同的错误。

Git远程-v投掷下面的输出。

 $ git remote -v origin git://myhost/git/username/myGitRepo.git (fetch) origin git://myhost/git/username/myGitRepo.git (push) 

任何人都可以帮助我解决这个错误?

开箱即用,标准的git-daemon不允许你push送到存储库。 手册页说:

这非常适合只读更新,即从git存储库中提取。

如果你真的想要启用匿名push (实际上,你不需要,只需要使用ssh ),你需要启用receive-pack服务,这个服务在默认情况下是禁用的(因为这是一个坏主意)。 再次,从手册页( 服务部分):

收到包

这为git send-pack客户端服务,允许匿名推送。 它在默认情况下是禁用的,因为协议中没有authentication (换句话说,任何人都可以将任何东西推入存储库,包括删除参考)。

大胆的是我的。 您可以通过在存储库的gitconfigurationdaemon.receivepack设置为true来传递--enable=receive-pack命令行选项或per-repository来全局启用此服务。