首页/开发/Git 与协作速查/git diagnose 收集仓库诊断
进阶与大仓实践69 条

git diagnose 收集仓库诊断

一键收集仓库状态、配置与对象库摘要并打包,用于上报疑难问题;输出文件可能包含路径与配置,对外分享前先检查。

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

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 确认。
诊断包是快照不是备份:不要用于恢复数据,重要仓库的备份另行安排。

易错点

  • 输出含本地路径与配置片段:公有渠道上报前先脱敏
  • 当备份用:诊断包不含对象内容,无法恢复仓库
  • 模式取值想当然:不同版本 --mode 取值不同,写死数字的脚本会直接报错
  • 收集时点太晚:现场重启或清理后才收集,信息价值下降,应尽快执行
  • 归档不管理:含路径信息属于敏感材料,注意留存与删除

数据来源与参考

  • Git 官方文档:git-diagnose
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌