mcpField
G
generating-patches

generating-patches

github.com/oaustegard开发15755 次安装1 天前更新
代码仓库

关于 generating-patches

generating-patches 是将代码库修改导出为可移植 Git 补丁文件的技能,适用于需要把 Claude 对上传项目所做的编辑带回本地仓库的场景,并说明补丁的生成与应用方法。

主要功能

  1. 01导出工作区或暂存区差异
  2. 02用 format-patch 保留提交元数据
  3. 03处理二进制和大型补丁情况
  4. 04提供本地应用及故障排查步骤
  5. 05从补丁生成 PR 描述

适用场景

  1. 01转移上传代码库中的编辑
  2. 02为仓库打包已提交的修改
  3. 03按文件类型或目录拆分大型补丁
  4. 04根据变更文件准备 PR 摘要

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/oaustegard/claude-skills --skill generating-patches

安装后在 Claude Code 中输入/generating-patches确认已加载。

附带文件README.md

详细介绍

生成补丁

从代码库修改生成可移植的 git 补丁文件,让用户能够将 Claude 的编辑应用到本地代码库。

适用场景

修改上传代码库中的文件后,如果用户需要将更改转回本地环境,请使用此功能。典型工作流:用户上传 zip → Claude 编辑文件 → 此技能将更改导出为补丁。

前提条件

确认 git 可用,且工作目录是 git 代码库(或可以初始化为代码库):

git status 2>/dev/null || git init

如果上传的代码库没有 git 历史记录,请先初始化并创建基线提交,然后再进行编辑:

git init
git add -A
git commit -m "Baseline: original uploaded state"

生成补丁

完成编辑后,生成统一差异:

# For uncommitted changes (working tree modifications)
git diff > /mnt/user-data/outputs/changes.patch

# If changes are staged but not committed
git diff --cached > /mnt/user-data/outputs/changes.patch

# For both staged and unstaged
git diff HEAD > /mnt/user-data/outputs/changes.patch

对于已提交的更改(保留提交消息和元数据):

# All commits since baseline
git format-patch --stdout baseline..HEAD > /mnt/user-data/outputs/changes.patch

# Or specify number of commits
git format-patch --stdout -n 3 > /mnt/user-data/outputs/changes.patch

处理边缘情况

二进制文件:Git diff 默认会排除二进制文件。如果二进制文件被修改,请提醒用户:

git diff --name-only --diff-filter=M | xargs file | grep -v "ASCII\|UTF-8\|empty"

大型补丁:对于大量更改,可考虑按目录或文件类型拆分:

git diff -- "*.py" > /mnt/user-data/outputs/python-changes.patch
git diff -- src/ > /mnt/user-data/outputs/src-changes.patch

未检测到更改:确认文件确实已修改。常见问题:

  • 在 git 工作树之外的副本中进行了编辑
  • 文件未由 git 跟踪(需要先执行 git add)

输出要求

始终将文件输出到 /mnt/user-data/outputs/,并使用描述性文件名。提供下载链接:

[Download changes.patch](computer:///mnt/user-data/outputs/changes.patch)

用户说明

每次交付补丁时,都要附上以下说明:


在本地应用此补丁:

cd /path/to/your/repo

# Preview changes (dry run)
git apply --check changes.patch

# Apply to working tree
git apply changes.patch

如果使用 format-patch 输出(包含提交元数据):

git am changes.patch

故障排除:

  • git apply --reject changes.patch — 尽可能应用补丁,并将冲突写入 .rej 文件
  • git apply -R changes.patch — 撤销先前应用的补丁
  • git apply --3way changes.patch — 启用三方合并以处理冲突

可选:PR 描述

如果用户提出请求,可根据补丁生成拉取请求描述:

# Extract summary of changes
echo "## Summary"
git diff --stat
echo ""
echo "## Changes"
git diff --name-only | while read f; do echo "- \`$f\`"; done

结合对更改内容及原因的简短说明,使其适合作为 GitHub PR 正文。

评论

支持 Markdown