有没有一种方法可以告诉git-status忽略.gitignore文件的影响?

63

我已经配置了许多.gitignore文件来过滤大约6000个未被跟踪的文件中的许多不需要的文件。当我的筛选列表达到要求后,我想运行git add .命令。

但是,接下来我想临时禁用.gitignore过滤器,以查看是否有重要的文件被意外过滤掉了。

我知道git-clean包含一个忽略.gitignore文件的选项。那么git-status有类似的选项吗?

我可以逐个删除所有.gitignore文件,进行检查后再恢复它们,但这似乎不是最简单的方法?

3个回答

74

这个选项 --ignored 起到了关键作用:

git status --ignored



(更新1)我发现在某些git安装中仅使用--ignored选项无法正常工作,可能是git的一个bug。在这种情况下,对我来说额外添加-s选项可以解决问题:

git status -s --ignored

(更新2) 有一个用户报告说,git版本1.7.0.4不支持--ignored选项。我的git版本是1.7.6。另一个版本1.7.5.1需要使用-s选项。你可以尝试

git status -h

查看是否支持--ignored参数。


2
+1 这必须是被接受的答案!!! man git status 没有记录 --ignored 选项。顺便说一下,--ignored 在 git 1.8.4 中得到支持。 - mvp
嗨。这是我发现最实用的一个。我特别高兴它能够使用Dart确认Windows联接文件类型的排除。如果您愿意,我还会添加进一步的预先ADD检查以显示将包含什么:“**git add -A -n -v .**”。 - will

41

请尝试使用git ls-files --other命令,它会列出所有Git不知道的文件,即那些既不在版本库中,也没有被.gitignore忽略的文件。

您还可以使用git ls-files --ignored --exclude-standard命令查看Git明确忽略的文件列表。


1
谢谢您的回复 - 看来 'git-ls-files --other' 也会列出被忽略的文件。如果使用分布式 .gitignore 文件,那么第二个命令是否有效?例如,不同级别的子目录树中有单独的 .gitignore 文件?您是否需要为树中的每个 .gitignore 指定 --exclude-from=<>?这将需要一个巧妙的查找命令。 - davidA
1
显然,您可以使用--exclude-standard选项从每个子目录中读取.gitignore文件。请参见此处:https://dev59.com/bHRB5IYBdhLWcg3w6bcE 我会更新我的答案以适应。 - Blair Holloway
--exclude-standard很有用 - 谢谢。 - davidA
谢谢!希望能影响索引,我想提一下,这正是我搜索“临时覆盖gitignore”时想要的。 - sage
--other 列出未版本化的文件和被忽略的未版本化的文件,--ignored --exclude-standard 忽略已版本化的文件。我有遗漏吗? - x-yuri

4

不是同一个问题。这个问题特别询问如何使用 git-status 进行操作。 - iconoclast
2
它们在形式上可能不同。但是,如果你只关注问题的形式而忽略问题背后的原因和动机,那么你并没有提供太多帮助。 - nalply
1
将其设为社区维基,因为这不是我的答案,只是指向别人答案的链接。 - nalply

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接