Git:无法索引文件-权限被拒绝

mbyulnm0  于 2022-09-21  发布在  Git
关注(0)|答案(4)|浏览(279)

仅对于一个文件,我收到以下错误:

error: unable to write sha1 filename /opt/www/.git/objects/3f/ce3587c54a8be14c69b08c6b01f94949b11b47: Permission denied

error: wp/wp-admin/css/theme-install.dev.css: failed to insert into database
fatal: unable to index file wp/wp-admin/css/theme-install.dev.css

我检查了我对有问题的文件、有问题的**.git对象目录以及.git**本身的权限。我可以添加除此文件之外的任何其他文件。我能看到那份文件,摸也没什么用。权限都是正确的。

这是什么疯狂的虫子吗?

vvppvyoh

vvppvyoh1#

如果您使用的是VISUAL STUDIO或生成MDF文件的类似工具,只需关闭VS并重试您的git命令即可。这一次,它应该会奏效。

要保存经常关闭和重新打开,您应该在项目根目录的.gitignore文件中添加引用。例如,如果问题是由数据库引起的,则添加以下内容:


# SQL Server files

* .mdf
* .ldf
imzjd6km

imzjd6km2#

查看Git源代码(sha1_file.c,函数move_temp_to_file()),Git似乎无法将名为/opt/www/.git/objects/3f/tmp_obj_XXXXXX的临时文件(其中XXXXXX是六个随机字符)重命名为/opt/www/.git/objects/3f/ce3587c54a8be14c69b08c6b01f94949b11b47。如果您没有在/opt/www/.git/objects/3f中删除文件的权限,则可能会发生这种情况。

以下是一些值得尝试的事情:

  • 如果有多个用户访问Git存储库,您可能需要运行类似git config core.sharedRepository 0664的命令(有关详细信息,请参阅git help config),以确保新创建的目录和文件对该存储库的所有用户具有适当的权限。
  • 尝试运行rm -f /opt/www/.git/objects/3f/tmp_obj_*,看看这是否能解决问题。
  • 通过执行以下操作,查看是否可以在Git之外重现该问题:
mkdir -p /opt/www/.git/objects/3f
cd /opt/www/.git/objects/3f
rm -f tmp_obj_* ce3587c54a8be14c69b08c6b01f94949b11b47
echo "testing" >tmp_obj_abcdefg
mv tmp_obj_abcdef ce3587c54a8be14c69b08c6b01f94949b11b47
rm -f tmp_obj_abcdefg

请确保以遇到错误的用户身份运行上述命令。

  • 递归地尝试chowning和e1d10d1到对象目录。
bxjv4tth

bxjv4tth3#

只需关闭Visual Studio(或Unity)并尝试再次添加这些文件。

jdgnovmf

jdgnovmf4#

您没有写入/opt/www/.git/objects/3f的权限。

最快的解决方案是使用sudo命令以超级用户权限执行命令。

sudo <Your git command>

为我解决了这个问题。

相关问题