当执行git push时,如何修复.git/目录的权限被拒绝的问题?

17

我在服务器上建立了一个git仓库,创建了一个新用户'git'。我的仓库位于/srv/git/example.git中。我能够使用git remote add origin git@domain/srv/git/example.git,然后添加并提交了我的更改。

然而,当我尝试git push origin master时,它在以下位置失败:

fatal: unable to create temporary file: permission denied'和'fatal: sha1 file write error: invalid argument'

在服务器上,我运行了以下命令:

sudo chown -R git:git /srv/git/`

这解决了我的问题,但我想知道这是否正确的做法?

2个回答

21
在服务器上,我运行了sudo chown -R git:git /srv/git/ - 这解决了我的问题,但我想知道这样做是否正确?
完全正确。之前的问题是git用户(通过SSH登录)无法写入存储库。
根据您的需求,您可以考虑不同的用户和SSH密钥组合,或者使用许多其他程序(如gitolite等)来更精细地控制访问权限。

12

首先,需要修复远程 .git 目录中的文件权限,例如:

sudo chmod -R ug+w /var/www/.git
sudo chown -R git:git /var/www/.git

如果您想将root组成员分配为推送访问权限,则可以使用root:root

然后需要将目标主机上的git仓库设置为共享,因此需要在远程上运行以下命令:

git config core.sharedRepository group

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接