.gitignore名称中包含空格的整个目录

Mur*_*ism 7 git directory whitespace ignore unity5

目标

试图忽略恼人命名的"TextMesh Pro"目录,位于"Assets"文件夹下(.gitignore所在的根目录的完整路径是"Sky Labyrinth\Assets\Text Mesh Pro").

尝试

我按照3个线程(,,)中的建议失败了.

在实际的.gitignore文件中,我试过:

TextMesh Pro/
TextMesh\ Pro/
**/TextMesh Pro/
**/TextMesh\ Pro/
\Assets\TextMesh Pro\
\Assets\TextMesh/ Pro\
**\Assets\TextMesh Pro\
**\Assets\TextMesh/ Pro\
"\TextMesh Pro\"
"**\TextMesh Pro\"
Run Code Online (Sandbox Code Playgroud)

还有一些我没想到的其他组合(确实不起作用).

排除

文件没有缓存,我从来没有从该目录提交任何内容.只是为了确定,我跑了:

git rm -r --cached "Sky Labyrinth\Assets\Text Mesh Pro\"
Run Code Online (Sandbox Code Playgroud)

什么都不匹配.为了倍加肯定,我跑了

git reset --hard
Run Code Online (Sandbox Code Playgroud)

并重新导入资产.我猜有一个小小的警告,我确实提交了一个.Unity场景更改,里面有一些TextMesh Pro游戏对象; 尽管我缺乏专家Git知识,但我确信不应该神奇地让Assets\TextMesh Pro \目录中的内容变得缓存或以某种方式不可忽略.

HALP

关于如何正确忽略名称中包含空格的整个子目录的任何想法?我不需要忽略其中的特定文件,我希望忽略整个事情.我理解作为一种解决方法,我可以:

  1. 从目录名中手动删除空格 - 但是每次更新插件时我都要重复这个

  2. 在\ TextMesh Pro \目录中创建另一个.gitignore,忽略内部的所有内容

    /*

    这将是我的最后一招,因为这是我唯一的工作.但是,我更愿意理解如何正确处理目录名称中的空格,或者了解如果是这样的话,根本不可能.

Mur*_*ism 10

正确的答案是:

TextMesh*Pro/
Run Code Online (Sandbox Code Playgroud)
**/TestMesh Pro/
Run Code Online (Sandbox Code Playgroud)

还应该工作

  • 这会忽略从“.gitignore”递归匹配“TextMesh*Pro”的任何目录。IE。`TextMesh_Pro/`、`TextMeshAPro/` 等。这个答案不正确 (4认同)
  • 如果`TextMesh Pro /`不起作用且`TextMesh*Pro /`确实有效,那么目录名中的空间很可能不是空格,或者有多个空格. (3认同)

小智 8

您似乎错过了 Text 和 Mesh 之间的空格之一。尝试添加

Assets/Text\ Mesh\ Pro/
Run Code Online (Sandbox Code Playgroud)

到你的 .gitignore