是否可以“git status”仅修改文件?

问题描述 投票:0回答:18

是否可以让

git status
仅显示修改后的文件,就我而言,由于暂存文件太多?

git ubuntu git-status
18个回答
358
投票

您无法使用

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


81
投票

看起来

git status -uno
只会显示 git 正在跟踪的文件,而不显示目录中的其他任何内容。不完全是你所要求的,但也许完成同样的事情(获取 git 跟踪的文件的可读长度列表)。


40
投票

对于修改后的文件:

git status | grep modified:

35
投票
git status -s | awk '{if ($1 == "M") print $2}'

26
投票

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


11
投票

git diff --name-only
也有效。


9
投票

你可以使用

$ git status -uno 

仅列出修改过的文件。


6
投票

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

git ls-files -m

如果您只需要基本名称(无路径),则可以使用 xargs 将每个结果逐行通过管道传输到基本名称命令:

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

6
投票

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

git status -uno

5
投票

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

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

您可以将路径传递给

git status
以将输出限制到存储库中的特定文件夹。

例如:

git status app
git status spec
git status src/components

3
投票

我使用这个命令:

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

输出如下所示:

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

3
投票

更新

打开

.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:"

如果你觉得打字这么多太麻烦:

  1. 创建批处理文件(例如:

    st.bat

  2. 写下以下内容:

    @echo off
    :: st.bat  (this line doesn't necessarily. ( just let you know the scripts name.))
    git status %~1 | findstr "modified: renamed: new file:"
    
  3. 添加包含批处理文件的环境路径。 (

    st.bat
    )

  4. 用法

    st.bat "*.py *.ini"
    

    (注意:如果输入 > 1 则必须添加分号)

操作系统:Linux

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

git status | grep modified:


1
投票

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

git show --stat --oneline HEAD

1
投票

另一种选择是通过

-s
将结果显示在一行上,这会限制显示的内容。

git status -s

Image of Git status -s

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


这个命令非常方便,我将其添加为别名,用作

git stati

[alias]
   stati = !git status -s

1
投票

所有答案都很棒,但 Git 已经发展,现在提供了一个开箱即用的解决方案,用于仅获取已更改文件的名称(包括未跟踪的文件)

git status --short

如果您需要脚本友好的输出,请使用推荐的 --porcelain 标志

git status --short --porcelain

0
投票

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


0
投票

如果你想列出修改过的文件,你可以这样做:

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

-1
投票

我用

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

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

© www.soinside.com 2019 - 2024. All rights reserved.