首页 > 解决方案 > Windows 共享网络文件夹上的 git commit

问题描述

我想使用 Hyper-V Windows 虚拟机进行开发。为了备份我的所有数据,我将主机操作系统的共享目录“挂载”(映射)到虚拟机中。我可以很好地编辑这个共享目录中的文件。

但是,git 不能正常工作。每当我尝试提交某事时,它都会告诉我:

致命:无法更新 ref 'HEAD':无法附加到 '.git/logs/HEAD':无效参数

问题是什么?这是已知的不兼容吗?

git status似乎工作得很好。

标签: gitgit-for-windows

解决方案


我不能说这是否是已知的不兼容,但这是:

fatal: cannot update the ref 'HEAD':
unable to append to '.git/logs/HEAD': Invalid argument

强烈建议您使用的特定文件系统设置根本不支持 open-for-append:

*fd = open(path, O_APPEND | O_WRONLY | O_CREAT, 0666);

或者:

*logfd = open(logfile, O_APPEND | O_WRONLY, 0666);

来自 C 代码。无论使用这两者中的哪一个——使用哪一个取决于文件是否.git/logs/HEAD已经存在——open系统调用正在返回EINVAL

由于O_WRONLY并且在所有允许任何类型的文件写入的文件系统中O_CREAT O_APPEND受支持,问题必须出在文件系统对标志的实现上。


推荐阅读