当我尝试推到共享git远程时,我得到以下错误: 向存储库数据库添加对象权限不足

这适用于下一次推送,因为所有的文件都属于正确的组,但下一次有人推送一个更改时,它会在对象文件夹中创建一个新项目,该项目的默认组为组。我唯一能想到的就是改变所有开发人员签入项目的默认组,但这似乎是一种hack。什么好主意吗?谢谢。


当前回答

我在Samba共享上的远程存储库遇到了这个问题;我成功地从这个遥控器上拉了出来,但在推它的时候失败了。

错误的原因是我的~/中的凭据不正确。smbcredentials文件。

其他回答

sudo chmod -R ug+w .;

基本上,.git/objects文件没有写权限。上面的代码行授予目录中所有文件和文件夹的权限。

修复权限

我用这个来修复我的。git文件夹,@richard-hansen的答案缺少用户。

首先,您需要进入.git文件夹。

cd /path/to/repo/.git

然后执行这些命令。

sudo chown -R user:groupname .
sudo chmod -R g+rwX .
sudo find . -type d -exec chmod g+s '{}' +

这也将修复所有子模块。

在我的例子中,解决方案就是git再次提交。

问题自动解决了。

发生了什么事?我使用^C (Control-C)来避免写错误的提交消息。(我从错误的剪贴板中粘贴了错误的消息。)因此,我假设进程暂时冻结在后台,这暂时锁定了数据库。

我在使用Vagrant运行远程开发开发机器时得到了这个错误。上述解决方案都不能工作,因为所有文件都具有正确的权限。

我把config.vm.box = "hasicorp/ bioniic64 "改为config.vm.box = "bento/ubuntu-20.10"。

如果您使用不同的用户运行git init,而不是您计划在推送更改时使用的用户,则很容易发生这种情况。

如果你盲目地遵循[1]上的说明,这可能会发生,因为你可能创建了git-user作为根用户,然后立即转移到git init,而没有改变用户。

[1] http://git-scm.com/book/en/Git-on-the-Server-Setting-Up-the-Server