当我尝试推入 git 时,我遇到了这个问题:
error: insufficient permission for adding an object to repository database ./objects
fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To ssh://<repo url>/<repo dir>
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh://<repo url>/<repo dir>'
我以前偶尔遇到过这个问题,我们总是不得不通过每个用户 sshing 到 repo 并设置其中所有文件的组权限来解决它
chmod -R g+w *
这从来都不是一个令人满意的解决方案,现在因为其中一个人不在并且没有人知道他的 repo 用户的密码,这让我们感到很痛苦。所以,我正在尝试正确解决它。
当有人试图推动将改变另一个用户拥有的 repo 目录的更改时,似乎会发生该错误(因此在上面设置了组写入选项)。我已经对此进行了一些谷歌搜索,并发现了一些正在讨论的解决方案(这两种解决方案都不适合我)
1)确保与repo dirs共享的组是每个用户的主要组(我相信情况已经如此:每个用户只有一个组,所以必须是他们的主要组,对吗?)
- git repo core.sharedRepository 设置,详见此处: Git: Can’t push from one computer 我改变了这个,但没有任何区别。我是否需要重新加载配置或其他东西才能真正影响更改?
这是我的 repo 配置看起来像 atm:
[core]
repositoryformatversion = 0
filemode = true
bare = true
sharedRepository = all
[receive]
denyNonFastForwards = True
感谢任何意见或建议!最大限度
原文由 Max Williams 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有这个错误两周了,大多数解决方案都将“chmod -R”作为答案,不幸的是我的 git repos(本地/远程/共享 - 与团队)都在 Windows 操作系统上,即使chmod -Rv 显示所有文件都更改为“rwxrwxrwx”,随后的“ls -l”仍将所有文件显示为“rwxr-xr-x”,并且错误再次出现。我最终看到了 Ariejan de Vroom 的 这个解决方案。它奏效了,我们都能够再次拉动和推动。
在本地(无法推送的本地)和远程存储库上,运行以下命令:
附带说明一下,我尝试使用 Windows 的本机文件权限/ACL,甚至将问题用户提升为管理员,但这些似乎都没有帮助。不确定环境是否重要,但它可以帮助具有类似设置的人 - 问题团队成员和远程(Windows Server 2008 R2 Standard),我的本地(Windows 7 VM)。