我在服务器上设置了一个git存储库。创建了一个新用户'git'。我的回购位于/srv/git/example.git
。我能够git remote add origin git@domain/srv/git/example.git
然后我添加并提交了我的更改。
但是,当我尝试git push origin master
时,它失败了:
致命:无法创建临时文件:权限被拒绝'和'致命:sha1文件写入错误:无效参数'
在我运行的服务器上:
sudo chown -R git:git /srv/git/`
这解决了我的问题,但我想知道这是否是正确的做法?
答案 0 :(得分:20)
在服务器上我运行了sudo chown -R git:git / srv / git / - 这解决了我的问题,但我想知道这是否是正确的做法?
绝对。之前的问题是,您通过SSH登录的git用户无法写入存储库。
根据您的需要,您可以考虑用户和SSH密钥的不同组合,或者可以用于更精细地控制访问的许多其他程序(gitolite等)之一。
答案 1 :(得分:9)
首先,修复远程.git
目录中的文件权限,例如
sudo chmod -R ug+w /var/www/.git
sudo chown -R git:git /var/www/.git
或root:root
如果您想为root
群组成员分配推送权限。
然后需要将目标主机上的git repository设置为shared,因此需要运行remote上的以下命令:
git config core.sharedRepository group