当前位置:首页 > 文章列表 > 文章 > 软件教程 > GitHub Pull Request 模板引导作者提交可复现信息

GitHub Pull Request 模板引导作者提交可复现信息

来源:17golang原创 2026-10-08 16:58:25 0浏览 收藏

在 GitHub 仓库的默认分支中创建 .github/pull_request_template.md,以后贡献者新建 Pull Request 时,正文会自动带出这份模板。模板最值得收集的不是泛泛的“改了什么”,而是审核者能直接执行的复现步骤、实际结果、预期结果、测试证据、影响范围与回滚办法。

GitHub 官方文档:https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository

完成后应看到的结果:
  • 模板文件位于默认分支的 .github/pull_request_template.md;
  • 打开 New pull request 后,Description 自动出现固定区块;
  • 作者只需替换提示内容,不必每次回忆团队要求;
  • 审核者可以先复现问题,再检查代码和验证结果。

使用场景:把审核前的追问变成提交时的填写项

没有模板时,Pull Request 很容易只写“修复登录问题”“优化查询”之类的结论。审核者仍然不知道问题出现在哪个环境、如何触发、修改前后分别是什么结果,也无法判断作者是否覆盖了回归测试。

一份实用模板应该让作者在提交时回答六类问题:

  1. 变更说明:为什么改,以及改动解决了什么问题;
  2. 复现步骤:审核者可以独立执行的最小步骤;
  3. 实际与预期结果:改动前发生什么,正确结果应该是什么;
  4. 验证信息:测试环境、测试命令和脱敏后的证据;
  5. 风险与回滚:影响范围、兼容性与回退方式;
  6. 提交前检查:关联 Issue、测试状态和敏感信息检查。

版本和入口:模板必须先进入默认分支

GitHub 支持把单个 Pull Request 模板放在仓库根目录、docs/ 或 .github/ 目录。本文使用 .github/pull_request_template.md,这样仓库根目录更整洁,也便于把协作配置集中在 .github 下。

模板只有存在于默认分支时,创建 Pull Request 才能稳定使用。若当前改动先进入 docs/add-pr-template 分支,需要先完成该分支对应的 Pull Request 并合并到 main,然后再用另一个新分支验证自动填充。

步骤一:从 Code 页进入新建文件入口

  1. 打开目标仓库主页,确认当前位于 Code 标签。
  2. 在文件列表右上方单击 Add file。
  3. 在展开菜单中选择 Create new file。

如果看不到 Add file,先检查当前账号是否对仓库有写入权限。只读成员可以在 Fork 中创建文件,但最终仍需通过 Pull Request 把模板合并到上游默认分支。

Git 仓库 Code 页展开 Add file 并高亮 Create new file 的原创操作示意图
图1:在仓库 Code 页展开 Add file,并选择 Create new file。

步骤二:创建模板文件并写入填写项

在文件名输入框中直接填写 .github/pull_request_template.md。GitHub 会按照斜杠自动创建目录层级。然后把下面的 Markdown 放入编辑器:


## 变更说明


## 复现步骤
1.
2.
3.


## 实际结果与预期结果
- 实际结果:
- 预期结果:


## 验证信息
- 测试环境:
- 测试命令:
- 验证结果:


## 风险与回滚
- 影响范围:
- 回滚方式:


## 提交前检查
- [ ] 已关联 Issue 或说明无需关联
- [ ] 已补充最小复现步骤
- [ ] 已完成测试并填写结果
- [ ] 已检查敏感信息

是 Markdown 中的 HTML 注释。它能在编辑状态提醒作者,却不会在正常渲染的 Pull Request 正文中显示。提示语应说明“要填什么”,不要堆成长篇制度;真正需要保留给审核者的信息放在标题和列表项中。

创建 .github pull_request_template.md 并填写结构化区块的原创编辑界面示意图
图2:创建 .github/pull_request_template.md,并写入结构化填写项。

步骤三:通过新分支提交模板变更

  1. 检查文件路径和正文后,单击右上角 Commit changes...。
  2. 提交说明填写 Add pull request template。
  3. 选择 Create a new branch for this commit and start a pull request。
  4. 分支名填写 docs/add-pr-template,再单击 Propose changes。

即使有权限直接修改默认分支,也建议通过新分支和 Pull Request 提交模板。这样团队可以先检查提示项是否足够清楚,避免把带有歧义或敏感信息示例的模板直接推给所有贡献者。

Commit changes 对话框选择新分支并提交模板变更的原创操作示意图
图3:填写提交说明,创建新分支并选择 Propose changes。

步骤四:新建测试 Pull Request 验证自动填充

先完成并合并模板变更,使文件进入默认分支。随后从另一个测试分支创建 Pull Request:

  1. 打开仓库的 Pull requests 标签,单击 New pull request。
  2. base 选择默认分支 main,compare 选择测试分支。
  3. 单击 Create pull request 进入标题和正文页面。
  4. 确认正文自动出现“变更说明、复现步骤、实际结果与预期结果、验证信息、风险与回滚、提交前检查”。
  5. 按实际改动填写内容,删除无关提示,再正式创建 Pull Request。

自动出现完整区块就是成功状态。如果正文为空,不要只刷新页面;优先检查模板是否已经合并到默认分支、文件名是否为 pull_request_template.md、目录是否为支持的位置。

New pull request 页面自动填入复现步骤和验证信息模板的原创结果示意图
图4:测试 Pull Request 的正文已自动带出模板,说明配置生效。

需要多种模板时:使用 PULL_REQUEST_TEMPLATE 目录

同一个仓库同时处理缺陷修复、功能开发和文档更新时,可以把模板拆分到 .github/PULL_REQUEST_TEMPLATE/ 目录,例如:

.github/
└── PULL_REQUEST_TEMPLATE/
    ├── bug_fix.md
    ├── feature.md
    └── documentation.md

创建 Pull Request 时,可以通过 template 查询参数指定模板:

https://github.com/OWNER/REPOSITORY/compare/BASE...HEAD?template=bug_fix.md

请把 OWNER、REPOSITORY、BASE 和 HEAD 替换为实际值。模板文件名应全部使用英文、数字、连字符或下划线,避免团队成员复制链接时遇到编码差异。

可见状态与限制:模板能引导,但不能强制必填

检查点正确状态异常时优先排查
文件位置默认分支包含 .github/pull_request_template.md是否只存在于功能分支
文件格式Markdown 正常渲染,注释不显示扩展名、标题和注释是否写错
创建 PRDescription 自动出现模板区块仓库、base 分支和模板目录是否正确
信息质量复现步骤可执行,证据已脱敏提示是否过于笼统

Pull Request 模板本质上仍是可编辑的 Markdown。作者可以删除区块,也可以不勾选检查项,因此它不能真正强制必填。若团队需要硬性门禁,应把模板与分支保护、必需状态检查、CODEOWNERS 或自定义自动化检查结合使用。

常见问题

模板已经提交,为什么新建 Pull Request 仍然为空?

最常见原因是模板还没有进入默认分支。其次检查大小写和目录:单模板使用 pull_request_template.md;多模板使用 PULL_REQUEST_TEMPLATE 目录。不要把 Pull Request 模板误放进 ISSUE_TEMPLATE。

可以在模板中放日志和截图示例吗?

可以提供占位说明,但不要放真实访问令牌、Cookie、用户邮箱、生产数据库地址或未脱敏日志。建议提示作者粘贴“最小且脱敏”的证据,并把大体积日志放在受控的内部系统。

复现步骤应该写到多细?

以审核者在相同前置条件下能够独立得到问题为准。步骤应包含入口、输入、动作和可见结果;如果问题与版本或环境有关,把版本号、操作系统、运行模式等写入验证信息。

最终确认清单

  • 模板文件已经合并到默认分支;
  • 模板要求填写变更说明、复现步骤、实际与预期结果;
  • 验证信息包含环境、命令和结果,而不是只写“测试通过”;
  • 风险与回滚项能够说明影响范围和恢复办法;
  • 测试 Pull Request 的正文自动带出全部区块;
  • 模板中没有账号、令牌、真实客户数据或其他敏感信息。

完成这些检查后,模板就从“格式装饰”变成了评审入口:作者在发起 Pull Request 时补齐上下文,审核者拿到链接后可以先复现、再核对修改、最后验证结果,减少往返追问。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
为什么 InsecureSkipVerify 不是临时万能解法,安全替代方案有哪些为什么 InsecureSkipVerify 不是临时万能解法,安全替代方案有哪些
上一篇
为什么 InsecureSkipVerify 不是临时万能解法,安全替代方案有哪些
电脑操作型智能体上线前需要哪些权限护栏
下一篇
电脑操作型智能体上线前需要哪些权限护栏
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    378次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    449次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    457次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    400次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    227次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码