Bash 列出git状态的文件 背景

Bash 列出git状态的文件 背景,bash,git,ls,Bash,Git,Ls,我非常了解git status的工作原理,甚至了解git ls文件。通常,git status是我所需要和想要的,它完美地回答了这个问题:“我的状态是什么,需要注意哪些文件?” 但是,我无法找到一个快速命令来回答以下问题:“我有哪些文件,它们各自的状态如何?”因此,我需要一个目录的完整列表(如ls-la),其中有一列显示每个文件/目录的状态 我试过的 git status-s--ignored非常接近我想要的输出格式,但它不会列出在头、索引和工作目录之间保持不变的文件。此外,它将递归到目录中

我非常了解
git status
的工作原理,甚至了解
git ls文件
。通常,
git status
是我所需要和想要的,它完美地回答了这个问题:“我的状态是什么,需要注意哪些文件?”

但是,我无法找到一个快速命令来回答以下问题:“我有哪些文件,它们各自的状态如何?”因此,我需要一个目录的完整列表(如
ls-la
),其中有一列显示每个文件/目录的状态


我试过的
git status-s--ignored
非常接近我想要的输出格式,但它不会列出在
头、索引和工作目录之间保持不变的文件。此外,它将递归到目录中

git ls files
似乎能够以脚本形式提供所有必需的信息,但我无法阻止它递归列出所有目录的内容

显然,我可以将这两个命令的输出整合在一起,提供我想要的视图。然而,如果已经有了一些可用的命令,我就不愿意重新发明轮子


问题: 是否有办法列出目录中的所有文件及其各自的git状态?
我想要一个完整的列表,显示与
ls
显示的文件完全相同的文件


笔记
不回答我的问题,因为我肯定想要一个
ls
等价物。包括未修改、忽略和未跟踪的文件,但不包括目录内容。

考虑使用其他脚本,但将
-uall
添加到
git状态
选项中。我不清楚“排除目录内容”是什么意思,因为
ls
查看目录内容。。。您还可以查看<代码> GIT-LS文件——其他输出,和/或考虑自己读取目录/IE,尤其是如果编写一个小Python程序或类似的内容。(重读你的问题,我明白你的意思是“不要递归”,真的。所以我认为可能一个Python程序将
os.listdir
git status--short
组合成你想要的任何输出格式会很好。)有几个选项可能是合适的。例如
git ls files--directory
,它将输出限制为给定目录中的文件(即
部分中定义的路径)-如果这就是您所说的“停止递归列表”的意思?。要列出文件状态,可以使用
-[cached | deleted | others | ignored | stage | unmerged | killed | modified]
选项。例如,运行
git ls files--modified
将列出给定
部分中具有修改状态的文件。@RobC
git ls files--directory
开关只会阻止它列出忽略目录的内容,而不会列出其中没有跟踪文件的目录。它仍将递归到所有跟踪目录和sub-[sub-…]目录中。对于我想要的东西来说,这是完全的过度。@RobC“recursive listing”=该命令在找到目录时遍历整个目录树,而不是修剪子树
ls foo/
将精确打印单个目录的内容,它将列出其中包含的目录
foo/bar/
,但它不会递归列出
foo/bar/
的内容。但是,
git
命令将列出所有
foo/bar/baz0001
<代码>foo/bar/baz9999
文件,每行一个…干杯@cmaster提供了非常翔实的解释。我知道递归列表的含义/作用,但是我没有意识到Git命令处理这个问题的方式有所不同——所以直到有了新的东西。或许我应该写更多事实上不正确的评论,以此作为学习的方法,而不是张贴实际问题;)那么git是否运行类似于
ls foo/**
的东西呢?