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

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


当前回答

使用下面的命令,就像魔术一样

sudo chown -R "${USER:-$(id -un)}" .

准确地输入命令(在结尾有额外的空格和一个点)

命令分解

sudo

以root用户运行

chown

改变所有权

-R

针对所有文件和文件夹的递归操作

"${USER:-$(id -un)}"

从$ user中获取用户名,如果没有设置,则通过运行id -un获取值

.

定位当前目录

其他回答

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

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

sudo chmod -R ug+w .;

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

我通过使用ssh://基于URL而不是基于http://的URL解决了这个问题。

几天前,我使用基于http://的URL克隆了存储库。在克隆和推送之间,我不得不在我的帐户上启用2FA,随后将我的公钥添加到代码库中。

由于启用了2FA, http:// URL无法正常工作。

这个问题还有一个解决方案,当你使用多个正在运行的docker容器并尝试更改和提交/推送一些东西时,这个解决方案可以重现。

在我的情况下,我不能提交任何东西,而所有的容器都在那里。但一旦我杀了他们,我就能毫无问题地投入。

我没有研究这种行为的原因,但我可以猜到,您在本地更改的代码在docker容器中重用,因为它是从根用户运行的,因此它可以更改它所使用的文件的一些权限-这可能会导致问题。

使用下面的命令,就像魔术一样

sudo chown -R "${USER:-$(id -un)}" .

准确地输入命令(在结尾有额外的空格和一个点)

命令分解

sudo

以root用户运行

chown

改变所有权

-R

针对所有文件和文件夹的递归操作

"${USER:-$(id -un)}"

从$ user中获取用户名,如果没有设置,则通过运行id -un获取值

.

定位当前目录