github-pr-workflow

自动化 GitHub PR 工作流 - 基于当前分支创建 PR、获取用户输入、检查冲突并自动合并。支持 squash 合并模式,遇到冲突时停止并提示用户。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "github-pr-workflow" with this command: npx skills add sakumyz/skills/sakumyz-skills-github-pr-workflow

GitHub PR 工作流自动化

概述

该技能用于自动化 GitHub PR 的完整工作流: 注意:无需关心当前分支是否还存在未提交的更改,但请确保当前分支已推送到远程仓库。

  1. 如果用户已在提示词中指明提交的 title,则使用用户提供的
  2. 如果没有则使用最近一次 git commit 的信息作为 PR 标题和描述
  3. 基于当前分支创建 PR
  4. 检查是否存在合并冲突
  5. 自动合并(squash 模式)或提示用户处理冲突

前置要求

  • Windows 系统(PowerShell 5.0+)
  • git 已安装
  • GitHub CLI (gh) - 脚本会自动检测并提示安装
  • 已登录 GitHub - 脚本会自动检测并提示登录
  • 用户已在当前分支上进行了提交并推送到远程仓库

工作流程

1. 自动检测 GitHub CLI

如果未安装 gh 命令,脚本会提示用户选择安装方式:

  • winget - Windows 包管理器(推荐)
  • Scoop - 另一个包管理工具
  • 手动下载 - 访问官网下载安装程序

2. 自动检测 GitHub 登录状态

如果未登录 GitHub,脚本会:

  1. 提示用户确认是否登录
  2. 自动运行 gh auth login
  3. 等待用户在浏览器完成认证
  4. 认证成功后继续执行工作流

3. 获取用户输入

脚本支持两种方式获取 PR 信息:

方式一:命令行参数传入(推荐) 优先使用该方法,如果用户提示词没说title 应该是什么,自动使用最近一次 git log -1 的提交信息

.\Invoke-GitHubPRWorkflow.ps1 -Title "PR标题" -Message "PR描述"

方式二:交互式输入

  • PR 标题:简洁描述本次提交内容
  • Commit Message:详细的提交信息
    • 输入多行内容,每行回车继续
    • 输入 END(不区分大小写)结束输入
    • 如果未输入任何内容,会自动使用最近一次 git log -1 的提交信息

4. 创建 PR

执行步骤:

# 1. 获取当前分支名
$branch = (git rev-parse --abbrev-ref HEAD)

# 2. 获取目标分支(通常是 main 或 master)
$baseBranch = (git remote show origin | grep "HEAD branch" | awk '{print $NF}')

# 3. 使用 gh pr create 创建 PR
gh pr create --title "$title" --body "$message" --base $baseBranch

5. 检查冲突

执行步骤:

# 获取 PR 编号
$prNumber = gh pr list --state open --head $branch --json number --jq '.[0].number'

# 检查合并状态
$prStatus = gh pr view $prNumber --json mergeable --jq '.mergeable'

# 如果 mergeable 为 false,表示有冲突
if ($prStatus -eq "false") {
    Write-Host "❌ 检测到合并冲突,请手动解决后再合并" -ForegroundColor Red
    exit 1
}

6. 合并 PR

执行步骤:

# 使用 squash 模式合并
gh pr merge $prNumber --squash --auto

# 或手动合并
gh pr merge $prNumber --squash --delete-branch

命令使用示例

# 从任意位置调用脚本(推荐方式)
c:\Users\housei\.claude\skills\github-pr-workflow\scripts\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\Projects\MyProject" -Title "修复了登录问题" -Message "修复了登录问题"

# 禁用自动合并,仅创建 PR
.\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\Projects\MyProject" -AutoMerge:$false

# 指定目标分支
.\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\Projects\MyProject" -BaseBranch "develop"

# 在项目根目录直接运行(无需指定路径)
.\Invoke-GitHubPRWorkflow.ps1

关键参数说明

参数类型说明默认值
ProjectPathstring项目根目录路径(可从任意位置调用脚本)当前目录
TitlestringPR 标题(不指定则交互输入)交互输入
MessagestringPR 描述(不指定则交互输入或使用 git log)交互输入/自动
BaseBranchstring目标分支自动检测
AutoMergeswitch是否自动合并 PR$true
mergeMode内置合并模式--squash
deleteAfter内置合并后删除分支true

错误处理

场景处理方式
未安装 GitHub CLI提示安装,提供多种安装方式供选择,用户选择后自动安装
未登录 GitHub提示登录,自动运行 gh auth login,等待用户完成认证
未在 git 仓库中停止流程,提示当前目录不是 git 仓库
PR 创建失败显示错误信息,停止流程
检测到合并冲突停止合并,提示用户手动解决
PR 已被合并提示 PR 状态已改变
合并失败显示错误原因,停止流程

注意事项

  • ✅ 脚本可从任意位置调用,使用 -ProjectPath 指定项目路径
  • ✅ 支持命令行参数传入 PR 标题和描述,无需交互输入
  • ✅ 执行前确认当前分支已推送到远程
  • ✅ 确保有足够的权限创建和合并 PR
  • ✅ 如果有冲突,需要本地解决后再重新推送
  • ✅ 脚本已自动设置 UTF-8 编码,支持中文标题和描述
  • ❌ 不要在保护分支上直接推送(应通过 PR)
  • ❌ 避免在多人协作的分支上自动合并未经审查的 PR

常见问题

Q: 如何从任意位置调用脚本,而不需要复制到项目根目录?

# 使用 -ProjectPath 参数指定项目路径
c:\Users\housei\.claude\skills\github-pr-workflow\scripts\Invoke-GitHubPRWorkflow.ps1 -ProjectPath "D:\path\to\project"

Q: 如何指定目标分支而不是自动检测?

# 使用 -BaseBranch 参数
.\Invoke-GitHubPRWorkflow.ps1 -BaseBranch "develop"

Q: 如何禁用自动合并,仅创建 PR?

# 使用 -AutoMerge:$false 参数
.\Invoke-GitHubPRWorkflow.ps1 -AutoMerge:$false

Q: 如何跳过交互输入,直接传入 PR 标题和描述?

# 使用 -Title 和 -Message 参数
.\Invoke-GitHubPRWorkflow.ps1 -Title "修复bug" -Message "修复了登录问题"

Q: 交互输入时,如何输入多行描述?

# 每行回车继续,输入 END(不区分大小写)结束
Commit Message (按 Enter 后输入,输入 'END' 后回车结束):
第一行描述
第二行描述
END

Q: 如果忘记输入描述,会发生什么?

# 脚本会自动使用最近一次 git commit 的信息作为 PR 描述

Q: 遇到冲突后如何继续合并?

# 本地解决冲突
git pull origin main  # 或你的目标分支
# 解决冲突文件后
git add .
git commit --amend --no-edit
git push --force
# 重新运行工作流

Q: 如何解决中文乱码问题?

# 脚本已自动设置 UTF-8 编码,如果仍有问题,可手动执行:
chcp 65001
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

集成建议

  • 与 CI/CD 流程集成:确保 PR 通过测试后再合并
  • 添加审核步骤:在自动合并前等待指定人员审查
  • 日志记录:记录所有 PR 的创建和合并日志
  • 团队规范:制定 PR 标题和 commit message 的规范

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review
General

excel-to-markdown

No summary provided by upstream source.

Repository SourceNeeds Review
General

perf-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
General

redmine-ticket-to-task

No summary provided by upstream source.

Repository SourceNeeds Review