【问题标题】:Git on Windows: How do I ignore a folder that has dots in its nameWindows 上的 Git:如何忽略名称中包含点的文件夹
【发布时间】:2020-11-17 20:07:21
【问题描述】:

我有一个这样的目录:'dir1/dir2/blah.blah.blah.blah/' 'blah.blah.blah.blah' 是文件夹我如何将它添加到 .gitignore?

我试过了: dir1/dir2/blah.blah.blah.blah/*

【问题讨论】:

  • 这应该“正常工作”,但作为toydarian noted in a comment,确保文件未被跟踪(即,现在不在Git的索引中:使用@ 987654322@ 查看 Git 索引中的每个文件,或 git ls-files dir1/dir2/ 查看 dir1/dir2/ 中的每个文件。
  • 你说得对,问题与点无关,而是 .gitignore 的设置方式。我应该删除这个问题吗?
  • 与其删除它,不如看看您是否可以找到有关如何为 Windows 设置与实际问题相匹配的 .gitignore 文件的问题和/或答案,并将其标记为重复.如果您找不到这样的问题,请发布您自己的答案。这样下次有人在 Windows 上遇到同样的问题时,他们可以找到这个问题和答案。
  • 除了@torek 所说的,这仍然是一个关于如何在.gitignore 文件中转义点的有效问题。
  • @toydarian:点在.gitignore 行中并不特殊,因为它们是全局模式,而不是正则表达式。 ( 值得怀疑* 是否匹配名称 . 开头的文件,因为 sh/bash 通常不匹配。Git 中的答案是“是的,它们匹配”:如果设置了 dotglob 选项,这就是 bash 处理 * 匹配的方式。)

标签: windows git gitignore


【解决方案1】:

您需要像这样转义.gitignore 文件中的.
blah\.blah\.blah\.blah

如果这不起作用,您可能早先将目录添加到了 git。在这种情况下,您需要将其从 git 中删除(git rm <directory> 然后 git commit)但这也会将其从工作目录中删除,因此如果您仍然需要文件,请备份它们!
按照问题 cmets 中 torek 的建议,使用git ls-files dir1/dir2/ 检查目录是否已添加到 git。

要从存储库中删除文件或目录,您可以使用:

git rm -r --cached <file/directory>
git commit -m "removes <file/directory>"

不过,这不会从历史记录中删除任何内容。签出较旧的提交时仍然可以访问这些文件。
它也不会删除目录中的实际文件,只会让 git 不再跟踪它们。

【讨论】:

  • 或者你总是可以的,假设其中一个是独一无二的,*blah*/
  • 试了两次都不行,如果有什么不同,我会在 Windows 上做。最后一行是:' dir1/dir2/blah\.blah\.blah\.blah/
  • 它在 linux 上可以正常工作。您可能想要标记问题windows。顺便提一句。如果目录已经添加到 git,.gitignore 中的条目将被忽略。在这种情况下,您需要使用 git rm 将其删除(但这也会将其从工作目录中删除!)。
猜你喜欢
  • 2010-11-01
  • 2018-08-31
  • 2016-04-09
  • 2021-01-06
  • 2014-05-06
  • 2014-10-24
  • 2018-04-02
  • 2019-04-18
  • 1970-01-01
相关资源
最近更新 更多