如何使git只列出文件夹中跟踪的目录?
使用如何使git只列出文件夹中跟踪的目录?,git,Git,使用git list files可以为我提供目录和其中跟踪的文件。是否有类似以下命令: git list-directories 或者类似的东西,只列出被跟踪的非空非递归目录名?我想这会给你你想要的: git ls文件| xargs-n 1 dirname | uniq 因此,将gitls文件的输出导入dirname,然后uniq结果。这对我来说似乎在本地有效 git ls-tree -rt HEAD:./ | awk '{if ($2 == "tree") print $4;}' 如果文件
git list files
可以为我提供目录和其中跟踪的文件。是否有类似以下命令:
git list-directories
或者类似的东西,只列出被跟踪的非空非递归目录名?我想这会给你你想要的:
git ls文件| xargs-n 1 dirname | uniq
因此,将gitls文件的输出
导入dirname
,然后uniq
结果。这对我来说似乎在本地有效
git ls-tree -rt HEAD:./ | awk '{if ($2 == "tree") print $4;}'
如果文件可能包含空格,我们将不得不使用:这不是很有趣
-r
使其递归,而-t
使其在递归时打印树,这在默认情况下是关闭的
我无法使用中提到的ls-tree
,因为很难处理没有文件的目录,只有其他目录
这种方法也显示了
在Git 2.19.0上测试。可能不会。Git跟踪文件,而不是目录。不过,您可能可以通过
list files
命令以某种方式派生出该信息,并定义一个符合您要求的git别名。@AJED32谢谢,然后我就这样做了。酷。一旦你弄明白了,一定要在这里发布一个答案,以方便将来可能会有相同问题的其他人。我会做一个sed,…|sed s,/[^/]*$,|uniq
,避免xargs-n1
对我来说似乎是一个很好的经验法则。@CDub:这也给出了子目录。不过仍然有用。你为什么不想要子目录?@CDub:我正在跟踪定义模拟测试用例的目录。有很多子目录。当我用来设置测试的参数在数量和值上有很大差异时,我创建了另一个测试并开始用git跟踪它,在这种情况下,我没有将它定义为同一目录的另一个版本。一旦算法启动并运行,我需要决定保留哪些测试,所以我需要做一些清理:所以我只想列出顶级目录,看看我是否正在跟踪所有目录,或者哪些目录没有被跟踪。我相信这会遗漏没有文件的目录,只有其他目录。这里有一种方法也考虑了它们: