Grep
查找不在 .gitignore 中的文件
我找到了在我的項目中顯示文件的命令:
find . -type f -not -path './node_modules*' -a -not -path '*.git*' \ -a -not -path './coverage*' -a -not -path './bower_components*' \ -a -not -name '*~'
如何過濾文件使其不顯示 .gitignore 中的文件?
我以為我使用:
while read file; do grep $file .gitignore > /dev/null && echo $file; done
但是 .gitignore 文件可以有 glob 模式(如果文件在 .gitignore 中,它也不適用於路徑),如何根據可能有 glob 的模式過濾文件?
git
提供git-check-ignore
檢查文件是否被.gitignore
.所以你可以使用:
find . -type f -not -path './node_modules*' \ -a -not -path '*.git*' \ -a -not -path './coverage*' \ -a -not -path './bower_components*' \ -a -not -name '*~' \ -exec sh -c ' for f do git check-ignore -q "$f" || printf '%s\n' "$f" done ' find-sh {} +
請注意,您會為此付出高昂的代價,因為檢查是針對每個文件執行的。
要顯示結帳中的文件並由 Git 跟踪,請使用
$ git ls-files
該命令有許多顯示選項,例如記憶體文件、未跟踪文件、修改文件、忽略文件等。請參閱
git ls-files --help
。