【问题标题】:Git - ignore files in repository with invalid file names on checkoutGit - 结帐时忽略存储库中文件名无效的文件
【发布时间】:2022-07-23 05:23:49
【问题描述】:

我正在使用的其中一个存储库在文件名中包含无效的窗口字符。具体来说,文件的名称中包含“:”(冒号)字符。我不知道这些文件是如何命名的,并且不能从存储库中删除这些文件,因为拥有存储库的团队需要它们。

我们可以通过 Git 的 Web 界面在存储库中工作,但是给定的文件会阻止我们在本地成功克隆存储库。克隆存储库时,这些文件由于名称无效而导致错误,并保留在索引中。在本地,git 将文件识别为“已删除”,因为它们不能在本地存在,并且我无法还原或存储感知到的更改。

我已尝试向我的全局 .gitignore 文件添加一个模式,以排除所有名称中带有冒号的文件 (:),但这似乎不会影响结帐过程。有没有一种方法可以让我在结帐时忽略这些文件而不将它们从存储库中删除?

【问题讨论】:

  • 您正在寻找git sparse-checkout*!*:*

标签: git github


【解决方案1】:

解决此问题的最佳方法是使用 Windows Subsystem for Linux (WSL) 下的存储库。对于存储在 WSL 伪磁盘中的文件路径,可以在路径名中使用任意非 NUL 字节,就像在 Linux 上一样。如果可以使用 macOS,那也可以。

您尝试使用 .gitignore 忽略文件无效,因为它对已跟踪的文件没有影响,而且 Git 没有提供忽略对跟踪文件的更改的方法。

您可以尝试稀疏结帐,但请注意非锥形模式已弃用。这意味着如果它们都在一个目录中,您将希望禁用检出包含文件的整个目录。稀疏结帐仍然可以在非锥形模式下工作(在这种情况下,您的模式看起来像 *!*:*),但它存在已知的性能问题,并且没有真正的计划来解决这些问题。

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2010-11-11
    • 2011-11-06
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多