使用命令行 git,如何让 git 显示在版本库中正在被跟踪的文件列表?
如果你想列出当前在分支 master
下被跟踪的所有文件,可以使用这个命令:
要列出当前在分支master
中被追踪的所有文件,可以使用此命令:
git ls-tree -r master --name-only
如果您想要列出曾经存在的所有文件(包括已删除的文件):
git log --pretty=format: --name-only --diff-filter=A | sort - | sed '/^$/d'
git
中,它并不直接对目录进行版本控制,而是存储文件及其路径。使用ls-tree
命令可以输出所有已版本控制的文件。为了更好地理解这一区别,请尝试将一个空目录添加到git
中。空目录将永远不会出现在暂存更改中。要对这样一个空目录进行版本控制,唯一的方法就是在该目录下实际版本化一个文件。如果您需要在版本控制中使用这样的空占位目录,可以在目录下创建一个虚拟文件,并将其纳入版本控制。希望这样的解释很清楚明白。 - Tuxdudels-tree master
命令不会显示暂存区中的已跟踪文件。 - nn0pgit log --pretty=format: --name-only --all | sort -u | sed '/^$/d'
命令。 - mic通过git ls-files
显示由 git 管理的文件。查看其手册页面。
ls
...或者 ls -R
保持一致。 - flow2kgit ls-tree
的行为也是相对于当前目录的。 - flow2k被接受的答案仅显示当前目录树中的文件。要显示已提交的所有跟踪文件(在当前分支上),请使用以下方法:
git ls-tree --full-tree --name-only -r HEAD
--full-tree
使命令表现得好像您在存储库的根目录中一样。-r
递归进入子目录。 结合使用 --full-tree
,这将为您提供所有提交的、已跟踪的文件。--name-only
移除 SHA / 权限信息,因此您只需要文件路径。HEAD
指定要获取所跟踪的提交文件列表的分支。 您可以将其更改为 master
或任何其他分支名称,但是 HEAD
是您当前检出的提交。这是接受答案中的方法,来自 ~重复问题https://dev59.com/7moy5IYBdhLWcg3wdd1v#8533413.
--full-tree
结合使用,这将为您提供所有已提交的跟踪文件”。这是否意味着自从repo开始以来提交的所有文件,还是有一些截止时间?目前接受的答案包括一个git log
命令,其输出比您的命令多几千行。我正在尝试查找几乎十年前提交的大文件,以便从历史记录中修剪它们。 - Ungeheuer你可能希望使用彩色输出。
我使用以下一行代码来列出当前分支中当前目录中已跟踪的文件和目录:
ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)
alias gl='ls --group-directories-first --color=auto -d $(git ls-tree $(git branch | grep \* | cut -d " " -f2) --name-only)'
'ls' --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)
还有一个别名:
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(git branch | grep \\* | cut -d \" \" -f2) --name-only)"
glr
别名看起来有点奇怪,所以我制作了一个更符合你提供的第一个别名格式的版本:alias glr='ls --color=auto -d $(git ls-tree -rt $(git branch | grep \* | cut -d " " -f2) --name-only)'
。在 Debian 10 上使用 git version 2.20.1
进行测试。 - baltakatei在已有答案的基础上,你可以使用tree
将其查看得更加美观:
git ls-tree --full-tree --name-only -r HEAD | tree --fromfile .
git ls-tree --full-tree --name-only -r HEAD | tree -C --fromfile . | ${PAGER:-less}
这绝对配得上在git配置中的tree
别名 :)