如何才能使git列表只包含文件夹中的跟踪目录?

时间:2013-11-27 16:07:59

标签: git

使用git list-files为我提供了目录和跟踪的文件。有没有像这样的命令:

git list-directories

或类似的东西,只列出跟踪的非空非递归目录名?

2 个答案:

答案 0 :(得分:7)

我认为这会给你你想要的东西:

git ls-files | xargs -n 1 dirname | uniq

因此,取git ls-files的输出并将其输入dirname,然后uniq结果。这对我来说似乎在本地工作。

答案 1 :(得分:0)

git ls-tree -rt HEAD:./ | awk '{if ($2 == "tree") print $4;}'

如果文件中可能包含空格,我们将不得不尝试:Using awk to print all columns from the nth to the last,这不是很有趣。

-r使其递归,-t使其在递归时打印树,默认情况下处于关闭状态。

我无法使用https://stackoverflow.com/a/20247815/895245所述的ls-tree,因为很难处理没有文件的目录,只有其他目录。

此方法还显示empty trees

在Git 2.19.0上进行了测试。