我一直在使用Redhat上的apache设置Git很多天。
<VirtualHost *:80> SetEnv GIT_PROJECT_ROOT /var/www/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ <Directory "/usr/libexec/git-core*"> Options ExecCGI Indexes Order allow,deny Allow from all Require all granted </Directory> <LocationMatch "^/git/.*/git-receive-pack$"> AuthType Basic AuthName "Git Access" AuthUserFile /var/www/passwd.git Require valid-user </LocationMatch> </VirtualHost>
mkdir /var/www/test1 cd /var/www/git/test1 # init repo git init --bare touch git-daemon-export-ok cp hooks/post-update.sample hooks/post-update git config http.receivepack true git config core.sharedRepository group git update-server-info chown -R apache:apache . chmod -R 775 .
[core] repositoryformatversion = 0 filemode = true bare = true sharedRepository = group [http] receivepack = true
将裸服务存储库/ var / www / git / test1克隆为
之后git clone http://192.168.26.129/git/test1
当我从客户端推送任何更改时,我仍然会收到错误
$ git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 202 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) Username for 'http://192.168.26.129': briangit remote: error: insufficient permission for adding an object to repository database ./objects remote: fatal: failed to write object error: unpack failed: unpack-objects abnormal exit To http://192.168.26.129/git/test1 ! [remote rejected] master -> master (unpacker error) error: failed to push some refs to 'http://192.168.26.129/git/test1'
我在网上进行了很多研究,并尽可能地尝试。 我真的不知道问题是什么。请帮忙。
答案 0 :(得分:0)
我建议您检查文件权限。
检查ssh密钥的文件权限,可以使用chmod进行更改。 你改变了整个目录的权限,我同意Splash是一个坏主意。
如果你能记住该目录的原始权限是什么,我会尝试将它们重新设置为该目录,然后执行以下操作
cd ~/.ssh
chmod 700 id_rsa
或
chmod 400 ~/.ssh/id_rsa
或
chmod 777 ~/.ssh/id_rsa
CHMOD权限:
# Permission rwx
7 read, write and execute rwx
6 read and write rw-
5 read and execute r-x
4 read only r--
3 write and execute -wx
2 write only -w-
1 execute only --x
0 none ---
哪里可以找到密钥?
支持.ssh文件夹。这将把id_rsa文件设置为仅为所有者(你)的rwx(读,写,执行),并为其他人设置为零访问。
如果最重要的是没有帮助,请尝试查看您的小组。将用户添加到组并尝试将分支推送到远程源/主服务器。
答案 1 :(得分:0)
注意:我没有在10年以上接触过Apache,所以请根据需要使用多少粒盐。但是,有一个明显的问题:
class MyClass { constructor(action) { this.action = action; } run(context, n) { this.action.call(context, n); } } let a = new MyClass(function(n) { this.log(n); }) a.run(console, 1);
不要那样做(根本)。你不应该这样做。而不是:
chmod -R 755 .
使用一行序列:
git init --bare
git config core.sharedRepository group
(或只是git init --bare --shared=group
,这意味着同样的事情)。
我不清楚您何时以及为何要将--shared
配置为http.receivepack
,但请参阅Documentation/git-http-backend.txt。