Windows 共享网络文件夹上的 git commit

标签 git git-for-windows

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

但是,git 无法正常工作。每当我尝试提交某些内容时,它都会告诉我:

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

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

git status 似乎工作得很好。

最佳答案

我不能说这是否是一个已知不兼容性,但是:

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

强烈建议您使用的特定文件系统设置根本不支持开放附加:

*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_WRONLYO_CREAT ,所以问题就出在此处使用文件系统的 O_APPEND 标志实现。

关于Windows 共享网络文件夹上的 git commit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64599363/

相关文章:

mintty - 如何在 Windows 版 Git 中升级 MinTTY

git - 如何从 Gerrit 中 git-pull 给定的补丁集?

Git - 查看具有相应哈希值的特定子模块的历史记录

python - Pyinstaller 未构建,因为 USS.jtx 的权限被拒绝

git - 如何处理 git 存储库中广泛的代码格式更改

windows - 如何在 VS Code 中使用 Windows 内置的 OpenSSH ssh-agent,而不是 Git bash?

使用 libgit2 创建并提交标签

git - 使用 git clone 命令克隆时访问被拒绝

git - 撤消 GIT Stage 并恢复本地更改