短格式是什么
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 与空格的组合会被合并成一处,状态判断随之出错。