当我尝试推到共享git远程时,我得到以下错误: 向存储库数据库添加对象权限不足
这适用于下一次推送,因为所有的文件都属于正确的组,但下一次有人推送一个更改时,它会在对象文件夹中创建一个新项目,该项目的默认组为组。我唯一能想到的就是改变所有开发人员签入项目的默认组,但这似乎是一种hack。什么好主意吗?谢谢。
当我尝试推到共享git远程时,我得到以下错误: 向存储库数据库添加对象权限不足
这适用于下一次推送,因为所有的文件都属于正确的组,但下一次有人推送一个更改时,它会在对象文件夹中创建一个新项目,该项目的默认组为组。我唯一能想到的就是改变所有开发人员签入项目的默认组,但这似乎是一种hack。什么好主意吗?谢谢。
当前回答
您需要在您的终端上复制并粘贴此命令:-
sudo chmod 777 -R .git/objects
其他回答
为我解决了… 就在这个:
sudo chmod 777 -R .git/objects
如果您使用不同的用户运行git init,而不是您计划在推送更改时使用的用户,则很容易发生这种情况。
如果你盲目地遵循[1]上的说明,这可能会发生,因为你可能创建了git-user作为根用户,然后立即转移到git init,而没有改变用户。
[1] http://git-scm.com/book/en/Git-on-the-Server-Setting-Up-the-Server
这个问题还有一个解决方案,当你使用多个正在运行的docker容器并尝试更改和提交/推送一些东西时,这个解决方案可以重现。
在我的情况下,我不能提交任何东西,而所有的容器都在那里。但一旦我杀了他们,我就能毫无问题地投入。
我没有研究这种行为的原因,但我可以猜到,您在本地更改的代码在docker容器中重用,因为它是从根用户运行的,因此它可以更改它所使用的文件的一些权限-这可能会导致问题。
适用于Ubuntu(或任何Linux)
从项目根,
cd .git/objects
ls -al
sudo chown -R yourname:yourgroup *
你可以通过以下方式说出你的名字和你所在的小组:
# for yourname
whoami
# for yourgroup
id -g -n <yourname>
注意:记住sudo行末尾的星号
最简单的解决方案是:
来自项目总监:
sudo chmod 777 -R .git/objects