繁体   English   中英

是否有可能 `git status` 只修改文件?

[英]is it possible to `git status` only modified files?

是否有可能让git status只显示修改后的文件,在我的情况下,由于暂存文件太多?

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

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

对于修改后的文件:

git status | grep modified:
git status -s | awk '{if ($1 == "M") print $2}'

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

git diff --name-only也可以。

您可以使用

$ git status -uno 

仅列出修改过的文件。

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

git status -uno

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

git ls-files -m

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

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

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

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

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

例如:

git status app
git status spec
git status src/components

更新

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

我使用这个命令:

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

output 看起来像这样:

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

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

git status -s

Git status -s 的图像

显示在 windows 终端与电力线/豪华 git。


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

[alias]
   stati = !git status -s

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

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

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

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

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

git show --stat --oneline HEAD

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

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

git status --short

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

git status --short --porcelain

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM