背景
我很清楚git status
的工作原理,甚至了解git ls-files
。通常情况下,我只需要和想要git status
,它完美地回答了这个问题:“我的状态是什么,哪些文件需要我关注?”
然而,我一直找不到一个快速的命令来回答以下问题:“我有哪些文件,它们各自的状态是什么?”因此,我需要一个完整的目录列表(像ls -la
),其中包含一个显示每个文件/目录状态的列。
我尝试过的方法
git status -s --ignored
非常接近我想要的输出格式,但它只会列出在HEAD
、索引和工作目录之间未更改的文件。此外,它还会递归进入目录。
git ls-files
似乎能够以可脚本化的形式提供所有所需的信息,但我无法阻止它递归列出所有目录的内容。
显然,我可以编写一些代码来处理这两个命令的输出,并提供我想要的视图。但如果已经有可用的命令,我会讨厌重新发明轮子。
问题
有没有一种方法可以列出目录中的所有文件及其各自的git状态?
我想要一个完整的列表,显示ls
将显示的完全相同的文件。
注释
这个问题不能回答我的问题,因为我绝对想要一个等同于ls
的命令。包括未修改、被忽略和未跟踪的文件,但排除目录内容。
git status
选项中添加-uall
。我不太清楚您所说的“排除目录内容”的意思,因为ls
查看的是目录内容... 您还可以查看git ls-files --other
输出,并/或者考虑自己读取目录,特别是如果您编写一个简单的Python程序或类似程序。 (重新阅读您的问题,我发现您真正的意思是“不要递归”。 因此,我认为将os.listdir
和git status --short
组合成您想要的任何输出格式的Python程序会很好。) - torekgit ls-files
有几个选项可能适合您的需求。例如,git ls-files --directory <path/to/dir/>
将输出限制为给定目录中的文件(即在<path/to/dir/>
部分定义的路径)- 如果这是您所说的“停止递归列表”的意思?要列出文件状态,可以使用--[cached|deleted|others|ignored|stage|unmerged|killed|modified]
选项。例如,运行git ls-files --modified <path/to/dir/>
将在给定的<path/to/dir/>
部分列出具有“修改”状态的文件。 - RobCls foo/**
的东西吗? - RobC</chat>
- RobC