Git clone 工作正常,但 git push 不工作

Git clone 工作正常,但 git push 不工作

我在 Git 服务器上创建了一个测试 git repo:

/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我在 repo 目录中添加了魔术文件“ ”。但我仍然收到上述错误。

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

出现同样的错误。

Git remote -v 抛出以下输出。

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

有人能帮助我解决这个错误吗?

答案1

开箱即用,标准git-daemon不允许您push进入存储库。 手册页说

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

如果您确实想要启用匿名push(实际上您并不想;只需使用ssh),则需要启用该receive-pack服务,默认情况下该服务是禁用的(因为这不是一个好主意)。同样,从手册页(服务部分):

接收包

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

大胆的是我的。您可以通过传递命令行选项来全局启用此服务,或者通过在存储库的 git 配置中设置为来--enable=receive-pack为每个存储库启用此服务。daemon.receivepacktrue

相关内容