服务器上的GIT主目录是/ srv / gitolite,配置如下:
user@server:~/repositories$ ls -al /srv/gitolite/repositories/
total 20
drwxr-x--- 5 gitolite gitolite 4096 Feb 12 21:23 .
drwxr-x--- 8 gitolite gitolite 4096 Feb 12 21:23 ..
drwx------ 8 gitolite gitolite 4096 Feb 12 21:23 gitolite-admin.git
drwxrwx--- 7 gitolite gitolite 4096 Feb 12 21:23 project.git
drwx------ 7 gitolite gitolite 4096 Feb 12 21:23 testing.git
gitolite @ server:/ $ cat /srv/gitolite/.gitolite/conf/gitolite.conf
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
repo project
RW+ = user
gitolite@server:/$ ls -al /srv/gitolite/.gitolite/keydir/
drwx------ 2 gitolite gitolite 4096 Feb 12 20:55 .
drwx------ 8 gitolite gitolite 4096 Feb 10 23:03 ..
-rw-r--r-- 1 gitolite gitolite 404 Feb 10 23:03 admin.pub
-rw-rw---- 1 gitolite gitolite 404 Feb 11 22:30 user.pub
-rw-rw---- 1 gitolite gitolite 393 Feb 12 20:55 test.pu
在本地机器上我做了:
mato@machine:/tmp$ mkdir test
mato@machine:/tmp$ cd test/
mato@machine:/tmp/test$ vim file.txt
mato@machine:/tmp/test$ git init
Initialized empty Git repository in /tmp/test/.git/
mato@machine:/tmp/test$ git remote add origin user@server:repositories/project.git
mato@machine:/tmp/test$ git add .
mato@machine:/tmp/test$ git commit -m 'test'
[master (root-commit) cb6bc87] test
1 file changed, 1 insertion(+)
create mode 100644 test.txt
mato@machine:/tmp/test$ git push origin master:refs/heads/master
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To user@server:repositories/project.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'user@server:repositories/project.git'
为什么我不能将项目file.txt推送到GIT服务器?我是否必须更改服务器上的某些权限?或者我做错了什么?
感谢您的任何建议。
答案 0 :(得分:1)
我在尝试上传到Bitbucket.org时遇到了这个错误。 我必须先添加SSH密钥。
虽然您正在运行自己的Git服务器,但这可能会有所帮助。
我跑了git push -u origin master #The -u flag告诉Git你第一次推进的是什么分支。
如果这不起作用,您可能必须首先尝试拉动然后推动。
答案 1 :(得分:0)
我在任何关于gitolite的教程中都没有找到丢失的谜题: 请注意,gitolite存储库始终作为“gitolite”用户访问。 gitolite将通过SSH密钥识别您的实际用户并使用适当的权限。
我无法使用:
git remote add origin user@server:repositories/project.git
但我必须使用登录名gitolite
(所有帐户都通用)
git remote add origin gitolite@server:repositories/project.git