是否可以让 git status
仅显示修改后的文件,在我的情况下,由于暂存文件过多?
git status
将调用寻呼机。
--short
或 --porcelain
获取状态的单行版本。
git ls-files -m
的建议:您关心哪些修改,已暂存、未暂存或两者兼而有之?
您无法使用 git status
执行此操作,但您可以使用 git ls-files -m
显示所有已修改的文件。
看起来 git status -uno
只会显示 git 正在跟踪的文件,而不显示目录中的任何其他内容。不完全符合您的要求,但可能完成了同样的事情(获取 git 跟踪的文件的可读长度列表)。
git status -u no
不显示 (1) 已修改的跟踪文件,也不显示 (2) 暂存的跟踪文件。我已经用 git 版本 1.8.5.2 和 1.9.4 验证了这一点。
git status -uno
(stackoverflow.com/questions/7008546/…)
对于修改过的文件:
git status | grep modified:
git config --global alias.modified '!git status | grep modified:'
git status -s | awk '{if ($1 == "M") print $2}'
awk '$1 == "M" { print $2 }'
git diff --name-only --diff-filter=M
git diff --cached --name-only --diff-filter=ACMR
,它会添加、复制、修改和重命名文件。
git diff --name-only
也可以。
您可以使用
$ git status -uno
仅列出修改过的文件。
我正在寻找相同的信息,发现以下给出了修改后的文件:
git status -uno
git status -uno --porcelain
为解析脚本添加了不错的输出
要列出修改后的文件,请使用:
git ls-files -m
如果您只想要基本名称(没有路径),那么您可以使用 xargs 将每个结果逐行传递到基本名称命令:
git ls-files -m | xargs -L 1 basename
问题是我目前不想提交或 gitignore 的暂存文件太多,我无法向上滚动。
虽然这可能无法直接回答仅列出已修改文件的问题,但它可能有助于限制列出的文件数量。
您可以将路径传递给 git status
以将输出限制到存储库中的特定文件夹。
例如:
git status app
git status spec
git status src/components
我使用这个命令:
$ 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\
更新
打开.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:
一种替代方法是通过 -s
将结果放在一行上,这可以限制显示的内容。
git status -s
https://i.stack.imgur.com/hy0jq.png
显示在带有 Powerline/Posh git 的 windows 终端下。
这个命令非常方便,我将它添加为用作 git stati
的别名
[alias]
stati = !git status -s
我使用 git cola
。它是一个简单而优雅的 UI 客户端,它将向您显示修改后的文件,并为您提供您所做更改的差异镜头。
git cola
为您提供了一个 GUI,您可以在其中可视化您修改了哪些文件、暂存了哪些文件,甚至是那些您不跟踪的文件。你的问题是我相信只使用 git status ,但我认为 git cola 可以在那个时候和其他事情上提供帮助。从更多信息中查看此网页:git-cola.github.com/screenshots.html
要列出所有修改的文件,请使用:
git show --stat --oneline HEAD
所有很好的答案;只是 FEI,“git checkout”(切换到或在同一分支中)似乎只显示修改后的文件。
如果要列出修改后的文件,可以这样做:
git log -n1 --oneline --name-status | grep '^M'
不定期副业成功案例分享
git status | grep modified
“'git status' 仅修改过的文件”。git ls-files -m
没有显示任何内容,但git status | grep modified
正在工作。git diff --name-only --diff-filter=M HEAD
将只显示已暂存和未暂存的修改文件,但您应该查看--diff-filter
上的文档以了解您可能想要添加的其他过滤器类型。