当我尝试推到共享git远程时,我得到以下错误: 向存储库数据库添加对象权限不足
这适用于下一次推送,因为所有的文件都属于正确的组,但下一次有人推送一个更改时,它会在对象文件夹中创建一个新项目,该项目的默认组为组。我唯一能想到的就是改变所有开发人员签入项目的默认组,但这似乎是一种hack。什么好主意吗?谢谢。
当我尝试推到共享git远程时,我得到以下错误: 向存储库数据库添加对象权限不足
这适用于下一次推送,因为所有的文件都属于正确的组,但下一次有人推送一个更改时,它会在对象文件夹中创建一个新项目,该项目的默认组为组。我唯一能想到的就是改变所有开发人员签入项目的默认组,但这似乎是一种hack。什么好主意吗?谢谢。
当前回答
只需复制并粘贴到您自己的终端。
sudo chown -R "${USER:-$(id -un)}" .
其他回答
我在Samba共享上的远程存储库遇到了这个问题;我成功地从这个遥控器上拉了出来,但在推它的时候失败了。
错误的原因是我的~/中的凭据不正确。smbcredentials文件。
我遇到了同样的问题。阅读这里,我意识到这是文件权限的消息是指。对我来说,解决办法是:
/etc/inetd.d/git-gpv
它以“nobody”用户启动git-daemon,因此缺乏写权限。
# Who When What
# GPV 20Nov13 Created this by hand while reading: http://linuxclues.blogspot.co.uk/2013/06>/git-daemon-ssh-create-repository-debian.html
# GPV 20Nov13 Changed owner (to user_git) otherise nobody lack permission to update the repository
#git stream tcp nowait nobody /usr/bin/git git daemon --inetd --verbose --enable=receive-pack --export-all /gitrepo
git stream tcp nowait user_git /usr/bin/git git daemon --inetd --verbose --enable=receive-pack --export-all /gitrepo
(我怀疑其他人把他们的inetd conf文件称为git-gpv。通常它会直接在/etc/inetd.conf中)
也有可能您添加了另一个具有相同别名的本地存储库。例如,您现在有两个本地文件夹称为origin,因此当您尝试推送时,远程存储库将不接受您的凭据。
重命名本地存储库别名,您可以通过这个链接https://stackoverflow.com/a/26651835/2270348
也许您可以留下一个您喜欢的本地存储库作为origin,而其他存储库则重命名它们,例如从origin到另一个origin。记住,这些只是别名,你所需要做的就是记住新的别名和它们各自的远程分支。
适用于Ubuntu(或任何Linux)
从项目根,
cd .git/objects
ls -al
sudo chown -R yourname:yourgroup *
你可以通过以下方式说出你的名字和你所在的小组:
# for yourname
whoami
# for yourgroup
id -g -n <yourname>
注意:记住sudo行末尾的星号
我只是想加入我的解。我在OS X上有一个回购,在一些目录上有根所有权,在其他目录上有Home(这是我的用户目录),这导致了上面列出的相同错误。
谢天谢地,解决办法很简单。从终端:
sudo chown -R Home projectdirectory