我在 Git 服务器上创建了一个测试 git repo:
/var/cache/git/username/myGitRepo.git
Run Code Online (Sandbox Code Playgroud)
这是一个“裸”的git repo。文件的所有权属于这个“用户名”用户。我可以在另一台 Windows 机器上克隆上面的 Git 存储库。
git clone git://myhost/var/cache/git/username/myGitRepo.git
Run Code Online (Sandbox Code Playgroud)
回购正确克隆。然后我可以进行本地提交并尝试将更改推送回我的 Git 服务器:
git push origin master
Run Code Online (Sandbox Code Playgroud)
但这会在服务器上出现权限错误:
fatal: remote error: access denied or repository not exported: /git/username/myGitRepo.git
Run Code Online (Sandbox Code Playgroud)
我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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我解决此错误?
lar*_*sks 11
开箱即用,该标准git-daemon
不允许您push
进入存储库。手册页说:
这非常适合只读更新,即从 git 存储库中提取。
如果您真的想启用匿名push
(实际上,您不这样做;只需使用ssh
),您需要启用receive-pack
默认情况下禁用的服务(因为这是一个坏主意)。再次,从手册页(服务部分):
接收包
这为 git send-pack 客户端提供服务,允许匿名推送。默认情况下它是禁用的,因为协议中没有身份验证(换句话说,任何人都可以将任何内容推送到存储库中,包括删除引用)。
该大胆的是我的。您可以通过传递--enable=receive-pack
命令行选项来全局启用此服务,或者通过在存储库的 git 配置中设置daemon.receivepack
为每个存储true
库。