使用git list-files
为我提供了目录和跟踪的文件。有没有像这样的命令:
git list-directories
或类似的东西,只列出跟踪的非空非递归目录名?
答案 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上进行了测试。