列出.gitignore未忽略的所有文件

时间:2016-08-21 13:06:10

标签: git list file

我想列出.gitignore未忽略的所有文件,例如我的存储库的所有源文件。

ag默认情况下做得很好,但我不知道一种方法可以在不安装其他软件的情况下运行。

没有选项的

git ls-files工作得很好,但没有考虑已经修改/创建的文件,例如,如果我创建一个新的文件栏而没有提交它,git ls-files没有显示该文件。

2 个答案:

答案 0 :(得分:8)

git status --short| grep  '^?' | cut -d\  -f2- 

会为您提供未跟踪的文件。

如果您将其与git ls-files结合使用,则您已获得所有未标记的文件:

( git status --short| grep '^?' | cut -d\  -f2- && git ls-files ) | sort -u

然后您可以按

过滤
( xargs -d '\n' -- stat -c%n 2>/dev/null  ||: )

仅获取可统计的文件(==在磁盘上)。

答案 1 :(得分:2)

这是另一种方法,使用git check-ignore可能会更干净:

find . -type f

将为您提供当前文件夹中的所有文件。

find . -type f -not -path './.git/*'

将为您提供所有文件,但.git文件夹中的所有文件除外,您绝对不希望包含这些文件。然后,

for f in $(find . -type f -not -path './.git/*'); do echo $f; done

与以上相同。只是准备下一步,介绍条件。这个想法是使用git check-ignore -q,当路径被忽略时它返回出口0。因此,这是完整的命令

for f in $(find . -type f -a -not -path './.git/*'); do
    if ! $(git check-ignore -q $f); then echo $f; fi
done