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
将列出给定
部分中具有修改状态的文件。@RobCgit 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/**
的东西呢?