ChatGPT解决这个技术问题 Extra ChatGPT

是否可以只对修改过的文件进行`git status`?

是否可以让 git status 仅显示修改后的文件,在我的情况下,由于暂存文件过多?

你怎么有滚动限制?默认情况下,git status 将调用寻呼机。
抱歉,我的机器上的回滚限制设置为 512 行。我想我可以改变它;但更喜欢单行命令来查看状态中刚刚修改的文件,因为 GD/imagecache 最终会生成更多文件。
对...我的意思是寻呼机不使用终端的回滚。
仅仅为你觉得有趣的东西而苦恼有什么问题吗?使用 --short--porcelain 获取状态的单行版本。
还有一点,基于使用 git ls-files -m 的建议:您关心哪些修改,已暂存、未暂存或两者兼而有之?

L
Lily Ballard

您无法使用 git status 执行此操作,但您可以使用 git ls-files -m 显示所有已修改的文件。


就像其他人知道的那样,这只会显示已修改但尚未暂存的文件。
虽然这是公认的答案,但它的信息不准确。正如 user23186 在他们的回答中所指出的那样,您可以使用 git status | grep modified “'git status' 仅修改过的文件”。
对我来说,git ls-files -m 没有显示任何内容,但 git status | grep modified 正在工作。
正如其他人指出的那样,这仅显示未暂存的文件。如果您想同时显示未暂存和暂存文件,这是我见过的最佳答案:stackoverflow.com/a/39994894/452587
@thdoan 有许多显示暂存文件的选项,尽管这个特定问题似乎想要明确排除暂存文件。 git diff --name-only --diff-filter=M HEAD 将只显示已暂存和未暂存的修改文件,但您应该查看 --diff-filter 上的文档以了解您可能想要添加的其他过滤器类型。
K
Kamal Reddy

看起来 git status -uno 只会显示 git 正在跟踪的文件,而不显示目录中的任何其他内容。不完全符合您的要求,但可能完成了同样的事情(获取 git 跟踪的文件的可读长度列表)。


git status -u no 不显示 (1) 已修改的跟踪文件,也不显示 (2) 暂存的跟踪文件。我已经用 git 版本 1.8.5.2 和 1.9.4 验证了这一点。
@TomNysetvold,您实际上可能是指 git status -uno (stackoverflow.com/questions/7008546/…)
L
Lance

对于修改过的文件:

git status | grep modified:

非常有用,我为此创建了一个别名:git config --global alias.modified '!git status | grep modified:'
C
Carl Bäckström
git status -s | awk '{if ($1 == "M") print $2}'

awk '$1 == "M" { print $2 }'
Z
ZeroGraviti

git diff --name-only --diff-filter=M


我推荐那些过滤器:git diff --cached --name-only --diff-filter=ACMR,它会添加、复制、修改和重命名文件。
m
mpelzsherman

git diff --name-only 也可以。


K
Karthik

您可以使用

$ git status -uno 

仅列出修改过的文件。


T
Tectrendz

我正在寻找相同的信息,发现以下给出了修改后的文件:

git status -uno

git status -uno --porcelain 为解析脚本添加了不错的输出
b
briggySmalls

要列出修改后的文件,请使用:

git ls-files -m

如果您只想要基本名称(没有路径),那么您可以使用 xargs 将每个结果逐行传递到基本名称命令:

git ls-files -m | xargs -L 1 basename

B
BillFienberg

问题是我目前不想提交或 gitignore 的暂存文件太多,我无法向上滚动。

虽然这可能无法直接回答仅列出已修改文件的问题,但它可能有助于限制列出的文件数量。

您可以将路径传递给 git status 以将输出限制到存储库中的特定文件夹。

例如:

git status app
git status spec
git status src/components

S
SebMa

我使用这个命令:

$ git status -sb -uno | grep -v "^\sD\s"

输出如下所示:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h

但这也会打印已删除的内容。
我添加 \M git status -uno -sb | grep M\
@kritzel_sw 我刚刚修改了我的命令以不显示已删除的文件。
C
Carson

更新

打开.gitconfig

[user]
     name = ...
     email = ...
[alias]
    # 👇 add below code
    mySt = "!f() {\
        inputType=${1:-" "};\
        git status -s | grep "\\ $inputType" |\
        sed -e 's/ / /'   ;\
    }; f"

解释:https://stackoverflow.com/a/62772985/9935654

用法

git mySt M : 显示已修改: git mySt M *.md : 显示所有 *.md,已修改。 git mySt D :已删除: git mySt :与 git status -s 相同

操作系统:windows

以下命令将显示所有包含“modified:”、“renamed:”或“new file:”的行

git status | findstr "modified: renamed: new file:"

如果要指定文件类型:(例如 *.py *.ini

git status *.py *.ini | findstr "modified: renamed: new file:"

如果您认为输入这么多太麻烦:

创建一个批处理文件(例如:st.bat) 写入内容如下:@echo off :: st.bat(此行不一定。(只是让您知道脚本名称。)) git status %~1 | findstr“修改:重命名:新文件:”添加包含批处理文件的环境路径。 (st.bat) 用法 st.bat "*.py *.ini" (注意:如果 type > 1 则必须添加分号)

操作系统:Linux

正如@Lance所说,您可以尝试

git status | grep modified:


Ω
ΩmegaMan

一种替代方法是通过 -s 将结果放在一行上,这可以限制显示的内容。

git status -s

https://i.stack.imgur.com/hy0jq.png

显示在带有 Powerline/Posh git 的 windows 终端下。

这个命令非常方便,我将它添加为用作 git stati 的别名

[alias]
   stati = !git status -s

c
chrisjlee

我使用 git cola。它是一个简单而优雅的 UI 客户端,它将向您显示修改后的文件,并为您提供您所做更改的差异镜头。

git cola 为您提供了一个 GUI,您可以在其中可视化您修改了哪些文件、暂存了哪些文件,甚至是那些您不跟踪的文件。你的问题是我相信只使用 git status ,但我认为 git cola 可以在那个时候和其他事情上提供帮助。从更多信息中查看此网页:git-cola.github.com/screenshots.html


鉴于我不熟悉这个 git cola,你能否提供这与我的答案有何关系。例如截图,或者更多细节?
那为什么被否决了? :) 无论如何,git cola 为您提供了一个 GUI,您可以在其中可视化您修改了哪些文件,暂存了哪些文件,甚至是那些您不跟踪的文件。你的问题是我相信只使用 git status ,但我认为 git cola 可以在那个时候和其他事情上提供帮助。从更多信息中查看此网页:git-cola.github.com/screenshots.html
如何更改可乐的界面语言?
C
CertainPerformance

要列出所有修改的文件,请使用:

git show --stat --oneline HEAD

g
galaxis

所有很好的答案;只是 FEI,“git checkout”(切换到或在同一分支中)似乎只显示修改后的文件。


P
Pang

如果要列出修改后的文件,可以这样做:

git log -n1 --oneline --name-status | grep '^M'