首页/开发/Git 与协作速查/git status --short 短格式与脚本解析
Git 基础与命令88 条

git status --short 短格式与脚本解析

面向脚本的稳定输出:--short 简洁显示,--porcelain=v1/v2 格式稳定;两列 XY 分别对应暂存区与工作区状态。

Git 与协作速查开发更新于 2026-10-13

短格式是什么

git status --short 用一行的两列状态码替代冗长的文字描述,适合快速扫读或在终端里做概览。左列表示暂存区相对 HEAD 的状态,右列表示工作区相对暂存区的状态。空位用空格占位,因此列的位置本身就携带信息。

脚本输出为什么另有一套

--porcelain 系列是给程序消费的格式,它承诺输出稳定、不带颜色、不受本地配置影响。v1 与 --short 外形接近但语义有保证;v2 用更明确的字段划分,重命名与复制的信息更容易解析。写脚本或提交钩子时应该用 --porcelain。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法参数--short、--porcelain=v1、--porcelain=v2
列含义左列是暂存区,右列是工作区
常用标记M 修改、A 新增、D 删除、R 重命名、问号 未跟踪
稳定性--porcelain 格式稳定,适合脚本使用
附带信息--branch 显示分支与领先落后

典型使用场景

  • 快速扫读:改动多时用一屏看完所有状态
  • 脚本判断:用 --porcelain 判断仓库是否干净
  • 提交钩子:检查是否有未暂存改动或未跟踪文件
  • 概览分支:配上 --branch 查看领先与落后数
  • 排查重命名:用 v2 格式稳妥解析重命名记录

常用示例

常用示例
git status --short               # 两列状态码,紧凑输出
git status --short --branch      # 附带分支与领先落后
git status --porcelain=v2        # 脚本使用的稳定格式
git status --porcelain | wc -l   # 统计有几处改动
git status --porcelain --ignored # 连被忽略的文件一并列出

短格式常见状态

标记含义
M修改
A新增
D删除
R重命名
??未跟踪
做工具或脚本时用 --porcelain,比 --short 的可读格式更稳定,不受颜色与本地配置影响。
解析输出时不要按空格切列:重命名行里包含两个路径,按空格切会错位,应该使用 --porcelain=v2 的字段格式。

为什么列位置不能随便读

两列之间的空格是占位符而不是分隔符:只有右列有内容时,行首会先出现一个空格,看起来就像「少了第一列」。用脚本解析时必须按固定列位取值,不能先做空白压缩,否则 M 与空格的组合会被合并成一处,状态判断随之出错。

易错点

  • 两列都有内容(例如 MM)说明暂存区与工作区同时有改动,别只处理一侧
  • 解析输出时不要按空格切列,重命名行格式更复杂,应改用 --porcelain=v2
  • 把 --short 当成稳定接口写进脚本,遇到配置或版本差异时容易解析失败
  • 短格式默认不展开忽略文件与未跟踪目录内部的文件,排查时容易遗漏

数据来源与参考

  • Git 官方文档:git-status(--porcelain)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌