diagnose 是什么
git diagnose 一键收集仓库诊断信息并打包:包括仓库结构、配置摘要、对象与包统计、钩子与版本信息,用于在环境复杂、人工描述成本高的场景下上报疑难问题。输出是一个 zip 归档(名为 git-diagnostics-时间戳.zip),不是备份:不含对象内容,也不能用于恢复仓库。对外分享前先检查其中的路径与配置片段。
基本信息
| 用法 | git diagnose [-o <输出目录>] |
|---|---|
| 内容 | 仓库结构、配置摘要、对象与包统计、钩子与版本信息 |
| 模式 | --mode=stats|all(取值以本机 git diagnose -h 为准) |
| 输出 | zip 归档,默认落在当前目录 |
| 版本 | Git 2.36+ |
| 注意 | 不含内容备份;分享前脱敏 |
典型使用场景
- 疑难上报:环境复杂、描述困难时一次收集完整材料
- 对象库异常:包损坏或对象缺失问题时提供全貌
- 配置排查:对比诊断包里的配置摘要找差异
- CI 故障:流水线环境无法远程登录时收集后再分析
- 结构学习:通过统计信息理解对象与包的组织方式
- 支持协作:附上诊断包减少与平台支持的来回沟通
常用示例
常用示例
git diagnose -o /tmp/gitdiag # 生成诊断包到指定目录
ls -l /tmp/gitdiag # 查看产出的 zip 归档
git diagnose --mode=all -o /tmp/gitdiag-all # 指定收集模式(2.54 取值 stats / all)包内要点
| 内容 | 说明 | 用途 |
|---|---|---|
| 仓库结构 | 目录与引用概况 | 快速理解仓库形态 |
| 配置摘要 | 相关配置项 | 对比环境差异 |
| 对象与包统计 | 对象、包与体积信息 | 判断对象库健康状况 |
| 钩子与版本 | hooks 与 Git 版本 | 解释行为差异 |
适合在环境复杂、人工描述成本高的场景一次性取证;收集后仍可在本地先自查关键指标。
不同 Git 版本的 --mode 取值可能不同(本机 2.54 为 stats / all),脚本化调用前先用 git diagnose -h 确认。
诊断包是快照不是备份:不要用于恢复数据,重要仓库的备份另行安排。