用途:为 Git 提交(或任意 Git 对象)附加元数据,而不修改对象本身;注释单独存储,并随提交信息一并显示。核心原则是在提交创建后追加信息而不重写历史。
主要能力:添加、追加、编辑、删除、复制、清理注释;通过 --ref 使用命名空间按用途(reviews、testing、audit 等)分类;在 git log、git show 中显示;显式推送/拉取 notes ref 实现团队共享;用 merge 策略合并 notes;配置 notes.rewrite.rebase/amend 与 rewriteMode 在变基、修补时保留注释。
常用用法:git notes add -m "message" <sha>;git notes show <sha>;git notes append -m "message" <sha>;git notes --ref=<name> <command>;git push origin refs/notes/<name>;git fetch origin refs/notes/<name>:refs/notes/<name>;git log --notes=<name>。变基前可执行 git config notes.rewrite.rebase true。
适用场景:代码审查状态跟踪、测试结果与覆盖率标注、代码质量与安全审计记录、补充提交说明,以及在不改变提交 SHA 的情况下累积附加信息。
限制与注意:注释默认不随普通 push 上传,需显式推送对应 ref;未指定 --ref 时日志中可能不显示注释;变基或修补后注释可能丢失,需提前配置保留;同一对象已存在注释时报错,可用 -f 覆盖或改用 append。命名空间、合并策略和显示配置均需显式设置。部分功能与具体命令选项依赖 Git 版本,资料未说明最低版本要求。