git clone 到 Windows 客户端时出现 error: invalid path

发布于 2024-06-29 21:14:54 字数 2313 浏览 14 评论 0

Git 克隆存储库在 Linux 客户端上成功,但在 Windows 客户端上失败,并出现 error: invalid path ​​ 错误。Windows 操作系统保留了一些文件名,因此文件名在 Linux 中可能合法,但在 Windows 中却不合法。

诊断

该错误将在 git clone/fetch 期间的最终签出期间出现。作为示例,我们尝试克隆包含 con.h 文件名的存储库。

$ git clone --progress --verbose      ssh://git@mybb.com:7999/project/myrepo.git     
Cloning into 'myrepo'...
remote: Enumerating objects: 825542, done.
remote: Counting objects: 100% (825542/825542), done.
remote: Compressing objects: 100% (239771/239771), done.
remote: Total 1414136 (delta 769602), reused 586108 (delta 585739), pack-reused 588594
Receiving objects: 100% (1414136/1414136), 13.91 GiB | 22.80 MiB/s, done.
Resolving deltas: 100% (1132339/1132339), done.
error: invalid path 'path/to/broken/file/con.h'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

路径似乎没什么问题。问题是文件的基本名称是 con Windows 中的保留名称。

原因

Windows 保留了某些文件名,因此尝试创建使用保留基本名称的文件将会失败。

请参阅 命名文件 Windows 文档:

请勿使用以下保留名称作为文件名称:

CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 和 LPT9。还应避免在这些名称后紧跟扩展名;例如,不建议使用 NUL.txt。

解决方案

虽然这可以解决这个问题,但应该小心,因为 Windows 客户端的默认设置为 core.protectNTFS=true 关闭潜在的安全问题 CVE-2019-1353 ,如下 所述

根据文件名,配置 Git 以忽略 NTFS 命名可能会解决该问题。

git config --global core.protectNTFS false

关闭后, protectNTFS Git 将不再抱怨那些具有保留基本名称的文件,但如果文件名是保留名称之一,则不会阻止错误。

唯一的解决方法是在源存储库或通过非 Windows 客户端重命名任何有问题的文件。

core.protectNTFS 实际上配置这个参数会忽略有问题的文件,最终的文件大小可能为 0,请谨慎使用!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
21 人气
更多

推荐作者

风暴

文章 0 评论 0

乐玩

文章 0 评论 0

英雄似剑

文章 0 评论 0

秋风の叶未落

文章 0 评论 0

luoshaoja

文章 0 评论 0

吴彦文

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文