How can I make git show a list of the files that are being tracked?
使用命令行git,如何让git显示存储库中正在跟踪的文件列表?
如果要列出分支
1 | git ls-tree -r master --name-only |
如果您想要一个曾经存在的文件列表(即包括已删除的文件):
1 | git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d' |
由git管理的文件由
如例如Lyle Z所指出的,当前答案仅显示当前目录树中的文件。要显示已提交的所有跟踪文件(在当前分支上),请使用
1 | git ls-tree --full-tree --name-only -r HEAD |
-
--full-tree 使命令运行,就像您在repo的根目录中一样。 -
-r 递归到子目录。与--full-tree 结合使用,可以为您提供所有已提交的跟踪文件。 -
--name-only 删除只需要文件路径的SHA /权限信息。 -
HEAD 指定您想要跟踪的已提交文件列表的分支。您可以将其更改为master 或任何其他分支名称,但HEAD 是您现在已签出的提交。
这是?重复问题https://stackoverflow.com/a/8533413/4880003的公认答案。
你可能想要彩色输出。
我使用这个单行代码列出当前分支的当前目录中的跟踪文件和目录:
1 | ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d"" -f2) --name-only) |
您可能希望将其添加为别名:
1 | alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d"" -f2) --name-only)' |
如果要递归列出文件:
1 | 'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d"" -f2) --name-only) |
和别名:
1 | alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d " " -f2) --name-only)" |