AGENT SKILL

git-patch-workflow

Creating, managing, and applying unified diff patches with Git for source code modifications.

License 许可
MIT
最近更新
2026-10-02
Stars
★ 92
Forks
7

01 前言 Front Matter

name
git-patch-workflow
description
Creating, managing, and applying unified diff patches with Git for source code modifications.

03 SKILL.md 正文

Git Patch Workflow

Creating Patch Files

Method 1: From Unstaged Changes

cd /path/to/repo
git diff path/to/file.java > /path/to/patch/fix.patch

Method 2: From Staged Changes

git diff --cached > /path/to/patch/fix.patch

Method 3: From Commits

# Create patch from last N commits
git format-patch -N HEAD

# Create patch from specific commit
git show COMMIT_HASH > /path/to/patch/fix.patch

Patch File Structure

A unified diff patch looks like:

--- a/original/path/file.java
+++ b/modified/path/file.java
@@ -10,5 +10,6 @@ class MyClass {
     // context line
-    old code here
+    new code here
     // context line

Key components:

  • --- prefix: original file
  • +++ prefix: modified file
  • @@ markers: line numbers and context
  • - prefix: removed lines
  • + prefix: added lines
  • No prefix: context lines

Applying Patches

Basic Application

cd /path/to/repo
patch -p1 < /path/to/patch/fix.patch

With Error Handling

# Dry-run to test application
patch -p1 --dry-run < /path/to/patch/fix.patch

# Apply with strict checking
patch -p1 < /path/to/patch/fix.patch

# Apply with less strict checking
patch -p0 < /path/to/patch/fix.patch

Best Practices

  1. Use Git Format: Create patches via git diff or git format-patch for consistency
  2. Include Context: Ensure adequate context lines (3+ lines around changes)
  3. Test Patches: Always dry-run before applying to ensure compatibility
  4. Modular Patches: Create separate patches for logically independent changes
  5. Clear Names: Name patches descriptively (e.g., fix-javascript-security-bypass.patch)
  6. Document Changes: Include explanation of what the patch fixes

Verifying Application

# Check if patch was applied
git status
git diff HEAD

# Verify specific file was patched
git show HEAD:path/to/file.java | grep "your fix"

Multiple Patches

For multiple related patches:

# Create patches in order
git diff HEAD~2 HEAD~1 > patch1.patch
git diff HEAD~1 HEAD > patch2.patch

# Apply in sequence
patch -p1 < patch1.patch
patch -p1 < patch2.patch

04 同仓库更多 Skills