笔记:
小白的答案更简单(git1.7.6+):gitstatus--忽略(如“有没有方法告诉gitstatus忽略.gitignore文件的影响?”)MattDiPasquale的答案(有待投票)gitclean-ndX适用于较旧的git,显示了可以删除哪些被忽略的文件的预览(无需删除任何内容)
同样有趣的是(在qwertymk的回答中提到),您还可以使用git-check-ignore-v命令,至少在Unix上是这样的(在CMD Windows会话中不起作用)
git check-ignore *
git check-ignore -v *
第二个显示.gitignore的实际规则,它使文件在git repo中被忽略。在Unix上,使用“什么递归扩展到当前目录中的所有文件?”和bash4+:
git check-ignore **/*
(或find-exec命令)
注:https://stackoverflow.com/users/351947/RafiB.在评论中建议避免(危险的)全球明星:
git check-ignore -v $(find . -type f -print)
不过,请确保从.git/子文件夹中排除文件。
CervEd在评论中建议,避免使用.git/:
find . -not -path './.git/*' | git check-ignore --stdin
原答覆42009)
git ls-files -i
除非其源代码表明:
if (show_ignored && !exc_given) {
fprintf(stderr, "%s: --ignored needs some exclude pattern\n",
argv[0]);
例外?
事实证明,在-i后面还需要一个参数来实际列出任何内容:
Try:
git ls-files -i --exclude-from=[Path_To_Your_Global].gitignore
(但这只会列出缓存的(非忽略的)对象,并带有过滤器,所以这不是您想要的)
例子:
$ cat .git/ignore
# ignore objects and archives, anywhere in the tree.
*.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git ls-files --ignored \
--exclude='Documentation/*.[0-9]' \
--exclude-from=.git/ignore \
--exclude-per-directory=.gitignore
实际上,在我的“gitignore”文件(称为“exclude”)中,我找到了一个命令行,可以帮助您:
F:\prog\git\test\.git\info>type exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~
所以
git ls-files --ignored --exclude-from=.git/info/exclude
git ls-files -i --exclude-from=.git/info/exclude
git ls-files --others --ignored --exclude-standard
git ls-files -o -i --exclude-standard
应该会成功。
(感谢honzajde在评论中指出,git-ls-files-o-i--exclude from…不包含缓存文件:只有git-ls-file-i--exclusive from…(不包含-o)包含缓存文件。)
正如ls文件手册页中提到的,其他文件是重要的部分,以便向您展示未缓存、未提交、通常被忽略的文件。
--excludestandard不仅仅是一种快捷方式,而是一种包含所有标准“忽略模式”设置的方法。
排除标准在每个目录中添加标准的git排除:.git/info/exclude、.gitignore和用户的全局排除文件。