仅对一个文件,我收到以下错误:
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 本身。我可以添加除此之外的任何其他文件。我可以stat/r/w/touch
文件,触摸没有帮助。 权限都是正确的。
这是一个疯狂的错误吗?
答案 0 :(得分:49)
如果您正在使用visual studio或类似的生成mdf文件的东西,只需关闭VS&再次重试你的git命令。这次它应该有效。
保持不断关闭&重新打开时,应该在项目根目录中添加对.gitignore文件的引用。例如,如果它是导致问题的数据库,请添加以下内容:
# SQL Server files
*.mdf
*.ldf
答案 1 :(得分:14)
查看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 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
请务必让遇到错误的用户运行上述命令。
chown
和chmod
对象目录。答案 2 :(得分:5)
您无权使用/opt/www/.git/objects/3f
撰写。
最快的解决方案是使用sudo
命令以root权限执行命令。
sudo <Your git command>
为我解决了。
答案 3 :(得分:2)
只需关闭Visual Studio(或Unity),然后尝试再次添加这些文件即可。
答案 4 :(得分:1)
您的git存储库中出现了某些问题,这很可能是由外部进程创建的文件或目录(由当前用户以外的用户拥有)导致的。
使用Docker时此错误很常见,并且docker-compose.yml文件中的服务具有本地安装的卷,该卷是使用与本地计算机用户不同的用户创建的。
如果这是第一次发生此错误,请在工作目录上执行以下操作,将文件和文件夹的所有权更改回登录的用户:
sudo chown -R ${USER}:${USER} .
如果这不是您第一次遇到此问题,即您已经提交并推送了另一个用户所拥有的文件和文件夹,那么仅上述情况并不能纠正这种情况,并且无法执行上述命令-您需要执行以下说明。
到目前为止,最快的解决方法是从保存git存储库的根项目目录执行以下操作:
sudo chown -R ${USER}:${USER} .git/objects
要测试所有问题是否已修复,请执行以下操作:
git add .
快速执行:
git status
您将看到,所有内容都已添加到git存储库中,而无需进行任何测试/弄乱任何东西。
答案 5 :(得分:0)
当权限为root时,我在我的裸源存储库中遇到此问题:git 770,显然我必须将其更改为771,即使我的用户位于git组中。我怀疑git可能不是acl-aware,或者与辅助组不兼容,因为在这种情况下git组是我的次要组之一。
答案 6 :(得分:0)
error: open("3/BasicMVVM/.vs/BasicMVVM/v16/Server/sqlite3/db.lock"): Permission denied
错误:无法索引文件3 / BasicMVVM / .vs / BasicMVVM / v16 / Server / sqlite3 / db.lock 致命:添加文件失败
如果您遇到此类错误并且正在使用Visual Studio,请先关闭Visual Studio。 git bash并在适当的地方写上“ git add *”,不要用逗号隔开 它会为我自己工作