GitHub CLI 新增媒体上传后怎么在工单中添加图片
来源:17golang原创
时间:2026-09-06 03:54:29 440浏览 收藏
GitHub CLI 最近补上了一个很实用的协作能力:升级到 gh v2.99.0 后,可以用可重复的 --attach 把本地图片或视频上传到 Issue、Pull Request 或评论,并让它直接出现在 Markdown 内容里。以前遇到界面缺陷、渲染结果或报错截图,往往要离开命令行打开浏览器;现在可以在提交工单的同一条命令中带上媒体文件。
最短用法是
gh issue comment ISSUE_NUMBER --body "复现结果见附件" --attach ./error.png。如果希望图片出现在正文中间,就在 body 文件里先写本地 Markdown 引用,再把同一个路径传给--attach。
--attach支持 Issue 和 PR 的创建、编辑、评论命令,并且可以重复传入。- 上传需要目标仓库写权限;认证仍使用 GitHub CLI 已支持的 OAuth 或经典个人访问令牌。
- 图片和视频都能上传,但免费计划的视频上限与付费计划不同,GitHub Enterprise Server 不在本次支持范围内。
- 本地路径若已出现在 Markdown 中,CLI 会原地改成上传后的地址,不会再追加一份重复附件。
GitHub CLI 这次新增了什么
这次变化的关键不是多了一个“上传”按钮,而是媒体上传和内容写入被合并到一个命令模型中。--attach 可以用于 gh issue create、gh issue edit、gh issue comment、gh pr create、gh pr edit 和 gh pr comment。同一个文件不能重复附加,但不同文件可以多次传入。

如果正文没有引用附件,未被引用的文件会按参数顺序追加到文末;如果正文已经写了同一路径,CLI 会保留原来的 alt 文本并在原位置替换地址。这一点很适合脚本生成复现报告:正文结构由 body 文件控制,上传动作由参数控制。
把图片放进 Issue 的最短路径
先检查本机版本和认证状态。不要只看命令能否解析,真正上传还需要对目标仓库有写权限。
# 确认 CLI 版本,媒体附件要求 gh v2.99.0 gh --version # 确认当前账号和可访问的仓库 gh auth status # 把单张图片作为评论附件上传 gh issue comment 123 --body "复现截图已附上" --attach ./error.png
图片 alt 文本可以接在路径后的 # 之后,例如:
# # 后的内容只用于描述追加的图片 gh issue comment 123 --attach './error.png#登录页显示认证错误'
省略 alt 文本时,GitHub CLI 会退回使用文件名。对无障碍和后续检索来说,给截图写一句描述比保留 error-final-2.png 更有用。
需要把附件放在正文中间怎么办
将正文保存为 body.md,先写出本地文件引用:
复现步骤执行到第二步时出现空白区域:  期望结果是表单继续显示。
然后把 body 文件和相同的本地路径一起传入。路径必须对应同一个文件,CLI 才能原地替换:
# body.md 中的本地路径会被替换为 GitHub 上传地址 gh issue comment 123 \ --body-file ./body.md \ --attach ./error.png
如果要提交一份带前后对比的 PR,可以重复使用 --attach:
# 两个附件分别对应正文中的两个本地引用 gh pr create \ --title "修复登录页空白状态" \ --body-file ./pr-body.md \ --attach ./before.png \ --attach ./after.png
正文来自 --body、--body-file、标准输入还是编辑器,都不影响这种路径替换行为。
使用前要核对的权限与文件边界
官方文档把上传条件说得很明确:要对目标仓库有 push 权限,认证使用 GitHub CLI 已有的 OAuth token 或经典个人访问令牌。支持的媒体包括 PNG、JPEG、GIF、WebP、SVG、MP4、MOV 和 WebM。

| 核对项 | 实际含义 | 常见误区 |
|---|---|---|
| 命令范围 | Issue 和 PR 的 create、edit、comment | 不是所有 gh 子命令都自动支持 |
| 权限 | 目标仓库需要写权限 | 能读取仓库不代表能上传 |
| 大小 | 图片/GIF 为 10 MB;视频免费计划 10 MB、付费计划 100 MB | 不能把视频上限套到图片 |
| 平台 | GitHub.com 的能力已面向所有计划开放 | GitHub Enterprise Server 本次不支持 |
团队脚本最好在提交前检查文件大小,并把 CLI 版本写进开发容器或 CI 镜像。这样失败时能区分“路径不存在、权限不足、文件超限”和“命令版本过旧”,而不是只看到一个上传失败。
常见问题
--attach 能用于普通评论吗?
可以,gh issue comment 和 gh pr comment 都在支持范围内,也可用于创建和编辑 Issue 或 PR。
没有仓库写权限还能上传吗?
不能。官方要求对要附加文件的仓库具有写权限;仅有读取权限的协作者需要改用有权限的账号或由有权限者提交。
为什么图片出现在文末而不是指定位置?
通常是 body 中没有写与 --attach 完全相同的本地路径。未被正文引用的附件会被追加到文末。
视频也支持 alt 文本吗?
不支持。路径后的 alt 文本适用于图片;视频附件不能用这种方式设置 alt 文本。
这项变化适合怎样的团队流程
对命令行报障、自动化 PR、编码代理和 CI 生成的复现报告来说,--attach 能减少浏览器切换,也让工单在第一次提交时就带着实际画面。落地时建议固定 gh 版本、在脚本中明确 body 文件和附件路径,并在失败日志里记录仓库、命令类型和文件大小。先把它用于开发仓库和低风险流程,确认权限与限制后,再接入更严格的自动化提交流程。
-
426 收藏
-
412 收藏
-
109 收藏
-
386 收藏
-
269 收藏
-
科技周边 · 业界新闻 | 1小时前 | github · 企业迁移 · 代码仓库 · GitHub Enterprise GHES GHE.com Enterprise Live Migrations162 收藏
-
238 收藏
-
257 收藏
-
科技周边 · 业界新闻 | 5小时前 | devops · gitHub actions · 持续集成 · GitHub Actions GitHub Actions更新 reusable workflow GITHUB_TOKEN143 收藏
-
科技周边 · 业界新闻 | 16小时前 | github · rest api · 开发者工具 · 隐私 · 开放接口 · GitHub Star API Star history REST API stargazers history 仓库 Star 统计398 收藏
-
239 收藏
-
447 收藏
-
222 收藏
-
科技周边 · 业界新闻 | 1天前 | 云原生 · kubernetes · 故障排查 · 控制面 · 火绒流量防火墙 Kubernetes kube-apiserver WatchCache v1.37 API Priority and Fairness183 收藏
-
164 收藏
-
科技周边 · 业界新闻 | 2天前 | 云原生 · kubernetes · 证书轮换 · 工作负载身份 · Kubernetes 1.37 Pod Certificates 工作负载身份 Cluster Trust Bundles187 收藏
-
科技周边 · 业界新闻 | 3天前 | 云原生 · Etcd · kubernetes · 版本发布 · 内存优化 RangeStream Kubernetes 1.37 etcd 3.7 List请求458 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习