Git 权限问题

Git 权限问题

我遇到了某种 git 权限问题,希望有人能帮忙。每次我尝试提交时都会收到以下信息:

error: insufficient permission for adding an object to repository database .git/objects
error: Error building trees

我查看了几个解决此问题的建议,它们基本上都是为了确保 .git 文件夹中没有任何权限被破坏。我已确认我拥有所有内容的权限。我还检查了git config core.sharedRepositoryis的输出true

有人有什么建议吗?

答案1

您不知何故弄乱了权限或所有者或组。后者应该分别是您的用户或您的用户组。

在您的仓库中打开一个终端或导航到它。然后执行以下命令:

sudo chown -R david .git
sudo chgrp -R david .git

这将使您成为所有者,并且您的组成为.git文件夹中所有文件的组。当然,假设您的用户名是david。如果不是,请更改它。您的组与您的用户同名。如果您想将其应用于整个存储库,只需将其替换.git.(一个句点)。

如果这不能解决问题,请执行以下几行:

find .git -type d -exec chmod 755 {} +
find .git -type f -exec chmod 644 {} +

第一行赋予您所有目录的完整权限,第二行赋予您读取和写入文件.git夹中文件的权限。第一行可能会打印错误,再次通知您权限不足,因为find在文件夹的权限设置正确之前无法进入文件夹(如果权限设置完全错误)。如果发生这种情况,请再次运行第一个命令(在运行第二个命令之前),直到它不再打印错误。当然,您可以通过将第一个命令运行为root( sudo find .git -type d -exec chmod 755 {} +) 来避免这种情况。然后,无论如何,它都会在第一次运行时没有错误。

第二条命令使.git文件夹中的所有文件都不可执行。如果您不使用钩子,这不是问题。如果您这样做,您可能需要执行

chmod +x .git/hooks/*

之后将执行位返还给钩子。如果不将执行位返还给钩子,钩子将不再执行。如果您不使用钩子,这样做不会造成任何损害。

相关内容