206

在我的情况下,是否可以git status只显示修改后的文件,因为暂存文件太多?

4

17 回答 17

310

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

于 2012-04-04T20:26:40.603 回答
69

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

于 2012-04-04T20:28:20.740 回答
35

对于修改过的文件:

git status | grep modified:
于 2014-12-04T12:48:36.790 回答
34
git status -s | awk '{if ($1 == "M") print $2}'
于 2012-11-20T18:15:25.900 回答
20

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

于 2016-12-29T15:41:43.557 回答
10

git diff --name-only也可以。

于 2016-02-21T13:37:01.470 回答
5

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

git status -uno
于 2018-12-09T06:42:05.760 回答
5

您可以使用

$ git status -uno 

仅列出修改过的文件。

于 2019-06-19T19:56:53.930 回答
3

我使用这个命令:

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

输出如下所示:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h
于 2020-05-01T23:36:19.690 回答
3

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

git ls-files -m

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

git ls-files -m | xargs -L 1 basename
于 2017-11-09T23:33:20.667 回答
3

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

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

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

例如:

git status app
git status spec
git status src/components
于 2019-07-01T15:47:12.320 回答
1

更新

打开.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"
    

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

操作系统:Linux

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

git status | grep modified:

于 2019-10-14T02:06:25.267 回答
0

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

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

于 2012-04-05T01:30:49.053 回答
0

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

git log -n1 --oneline --name-status | grep '^M'
于 2016-11-29T22:44:30.437 回答
0

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

git show --stat --oneline HEAD
于 2018-07-27T04:08:08.920 回答
0

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

于 2019-05-20T14:32:50.807 回答
0

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

git status -s

Git状态图-s

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


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

[alias]
   stati = !git status -s
于 2022-02-20T22:25:28.460 回答