如何调整git status输出排序:修改文件优先,依次显示删除、新增文件
如何调整Git Status的文件排序,让修改文件优先显示?
好问题!Git默认确实是按文件名字母排序展示状态文件的,要实现你想要的「修改文件→已删除文件→新增文件」的排序逻辑,我们可以通过命令组合或者Git别名轻松搞定,下面给你两种实用方案:
方案1:直接用Shell命令组合实现
我们可以借助awk工具过滤并重新组织Git状态的输出,让不同类型的文件按你期望的顺序排列。执行以下命令就能得到目标格式的输出:
git status | awk ' /modified:/ { mods = mods $0 "\n" } /deleted:/ { dels = dels $0 "\n" } /new file:/ { news = news $0 "\n" } END { printf "%s%s%s", mods, dels, news } '
命令说明:
git status:输出默认的详细状态信息awk脚本会分别收集三类状态的行:- 匹配
modified:行,存入mods变量 - 匹配
deleted:行,存入dels变量 - 匹配
new file:行,存入news变量
- 匹配
- 最后按「修改→删除→新增」的顺序输出所有收集到的内容
如果你的项目里还有其他状态类型(比如renamed:重命名文件),可以在脚本里添加对应的规则,比如:
git status | awk ' /modified:/ { mods = mods $0 "\n" } /deleted:/ { dels = dels $0 "\n" } /renamed:/ { renames = renames $0 "\n" } /new file:/ { news = news $0 "\n" } END { printf "%s%s%s%s", mods, dels, renames, news } '
方案2:创建Git别名,一键调用
为了不用每次都敲长命令,我们可以把上面的逻辑做成Git别名,方便日常使用:
- 打开你的Git配置文件(全局配置是
~/.gitconfig,项目配置是.git/config) - 在
[alias]区块里添加以下内容:
[alias] status-sorted = !git status | awk ' /modified:/ { mods = mods $0 "\n" } /deleted:/ { dels = dels $0 "\n" } /new file:/ { news = news $0 "\n" } END { printf "%s%s%s", mods, dels, news } '
- 保存配置后,以后只要执行这个命令就能看到排序后的状态:
git status-sorted
这样调整后,提交前查看文件状态就完全符合你的使用习惯啦~
内容的提问来源于stack exchange,提问作者sai_ekkaldevi
相关产品推荐
相关产品推荐

