我遇到了一个问题,git ls-files --others --ignored --exclude-standard
没有列出一些被忽略的文件。
我的项目有这个目录结构:
.
├── aspnet
│ ├── .gitignore
│ ├── __init__.py
│ ├── lib
│ │ ├── <lots of big stuff>
aspnet/.gitignore
列出了 lib/*
, 并且执行 git add aspnet/lib/foo
时会提示该路径被忽略。
但是,git ls-files --others --ignored --exclude-standard
不会列出 lib
目录下的文件。这些是未跟踪的文件,如果我执行 git ls-files --others
,它们会出现在输出中,但如果提供已忽略的标志,则不会出现。
使用 git 版本 1.7.9.5
编辑:在 git 版本 1.8.5.2 (Apple Git-48) 中如预期工作,这似乎是一个 git bug。
git clean
和git ls-files
之间存在微妙的区别——clean
不会进入一个被忽略且完全未跟踪的目录——它的任务是清理工作树,而搜索(完全被忽略的)构建产物树可能会成为一个巨大的时间浪费。因此clean
看到目录本身被忽略了,并将其忽略掉。然而,git ls-files
将进入这些目录,因为它的任务是列出文件。 - jthillgit ls-files --others -i --exclude-standard
命令(加上-i
选项)吗? - Top-Master