如何让git显示正在跟踪的文件列表?

如何让git显示正在跟踪的文件列表?,git,Git,使用命令行git,如何使git显示存储库中正在跟踪的文件列表?如果要列出分支主目录下当前正在跟踪的所有文件,可以使用以下命令: git ls-tree -r master --name-only 如果您想要曾经存在的文件列表(即包括已删除的文件): git管理的文件显示为git ls files。查看其手册页。接受的答案仅显示当前目录树中的文件。要显示(在当前分支上)已提交的所有跟踪文件,请使用 git-ls-tree--完整树--仅限名称-r头 --full tree使命令像在repo的

使用命令行git,如何使git显示存储库中正在跟踪的文件列表?

如果要列出分支
主目录下当前正在跟踪的所有文件,可以使用以下命令:

git ls-tree -r master --name-only
如果您想要曾经存在的文件列表(即包括已删除的文件):


git管理的文件显示为
git ls files
。查看其手册页。

接受的答案仅显示当前目录树中的文件。要显示(在当前分支上)已提交的所有跟踪文件,请使用

git-ls-tree--完整树--仅限名称-r头
  • --full tree
    使命令像在repo的根目录中一样运行
  • -r
    递归到子目录中。结合
    --full tree
    ,这将为您提供所有提交的、跟踪的文件
  • --name only
    删除仅需要文件路径时的SHA/权限信息
  • HEAD
    指定要将跟踪的已提交文件列表用于哪个分支。您可以将其更改为
    master
    或任何其他分支名称,但
    HEAD
    是您现在签出的提交

这是对~重复问题的已接受答案的方法。

您可能希望使用此方法进行彩色输出

我使用这一行代码列出当前分支的当前目录中跟踪的文件和目录:

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)'
alias glr="'ls' --color=auto -d \$(git ls-tree -rt \$(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 gl='ls --group-directories-first --color=auto -d $(git ls-tree $(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)"

如果要列出当前分支的文件,请使用git ls tree-r HEAD--name。为什么目录未列出?@NicolasLykkeIversen-
git
不会直接对目录进行版本设置。相反,它存储文件及其路径<代码>ls树
将输出所有版本文件。为了更好地理解这一区别,请尝试将空目录转移到
git
。空目录将永远不会显示在暂存更改中。对这样一个空目录进行版本设置的唯一方法是对该目录下的文件进行实际版本设置。对于在版本控制中需要这样一个空占位符目录的用例,您可以在该目录下创建一个虚拟文件,并创建该版本。我希望解释清楚。请注意,
ls tree master
不显示暂存区中跟踪的文件。如果顶层目录包含许多子目录和文件,是否可以只显示顶层目录?这似乎只显示当前目录下的文件。介意我编辑此目录以包括手册页的相关部分吗?@NathanBasanese也许您可以添加另一个答案就是这个信息。@LyleZ也许这是为了符合
ls
…或者
ls-R
@LyleZ同样,这个行为与
git-ls-tree
是相同的-它是相对于
pwd
。我相信它可能是重复的。但是,当这有更好的答案时,将其标记为dup是不对的。在平行宇宙中,包含所有答案的相似性是不可思议的,你提供的
glr
别名看起来有点奇怪,所以我制作了一个与你提供的第一个别名格式更一致的版本:
alias glr='ls--color=auto-d$(git ls tree-rt$(git branch | grep\*| cut-d”“-f2)--
。在Debian 10上使用git 2.20.1版进行测试。