我很清楚如何git status
运作,甚至了解git ls-files
. 通常git status
这就是我所需要和想要的,它完美地回答了这个问题:“我的状态是什么,哪些文件需要我注意?”
但是,我一直无法找到一个快速命令来回答以下问题:“我有哪些文件,它们各自的状态是什么?” 因此,我需要目录的完整列表(如ls -la
),其中有一列显示每个文件/目录的状态。
git status -s --ignored
HEAD
非常接近我想要的输出格式,但它只是不会列出、索引和工作目录之间未更改的文件。此外,它还会递归到目录中。
git ls-files
似乎能够以可编写脚本的形式提供所有必需的信息,但我无法阻止它递归列出所有目录的内容。
显然,我可以将一些东西组合在一起,获取这两个命令的输出并提供我想要的视图。然而,如果已经有一些可用的命令,我不想重新发明轮子。
有没有办法列出目录中的所有文件及其各自的 git 状态?
我想要一个完整的列表,显示与要显示的文件完全相同的文件ls
。
这个另一个问题不能回答我的问题,因为我肯定想要一个ls
等价的问题。包括未修改、忽略和未跟踪的文件,但不包括目录内容。
要将 Git 检查的路径限制为当前目录,请使用其 Unix glob pathspec。由于git status
对索引和 HEAD 进行了大量检查,因此使用它,并填写其余文件ls
将向您显示,使用ls
,只需将其输出与 \ 的输出具有相同的格式git status
并仅采用那些git status
尚未列出。
( git status -s -- \':(glob)*\'; ls -A --file-type | awk \'{print " "$0}\' ) \\\n| sort -t$\'\\n\' -usk1.4\n
Run Code Online (Sandbox Code Playgroud)\n:(glob)
告诉 Git 路径规范的其余部分是 Unix glob,即*
应该只匹配一个级别,就像(启用 dotglob 的)shell 通配符 \xc2\xb9 一样。
告诉字段分隔符是一个换行符,即它都是一个大字段,并表示niquify -t$\'\\n\'
,只取第一个运行,表,保留不违反排序键顺序的输入顺序(即慢一点,所以你必须特别要求),说键从第一个字段开始,该字段中的第四个字符,没有给出结束,所以从那里到结束。sort
-usk1.4
u
s
k1.4
\xc2\xb9 为什么他们决定默认使路径规范既不像 shell 规范也不像 gitignore 规范那样匹配,我可能永远不会费心去学习,因为我非常喜欢无知地反对他们恼人的选择。
\n 归档时间: |
|
查看次数: |
3683 次 |
最近记录: |