mcpField
G
git-workflow

git-workflow

github.com/jezweb开发1.1k1.2k 次安装3 周前更新
代码仓库

关于 git-workflow

git-workflow 为常见 Git 操作提供分步骤指导,适合需要规范处理代码评审与仓库维护的开发者。内容覆盖 PR 准备、分支清理、冲突处理和发布前检查。

主要功能

  1. 01整理提交与差异以准备 PR
  2. 02安全清理已合并分支
  3. 03指导合并或变基解决冲突
  4. 04规范单仓库中的发布标签
  5. 05初始化仓库前配置 .gitignore
  6. 06检查私有仓库的许可信息

适用场景

  1. 01根据分支提交和差异撰写 PR
  2. 02清理已合并的本地分支
  3. 03处理 PR 与主分支间的冲突
  4. 04发布单仓库中的特定包版本

安装

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

$npx skills add https://github.com/jezweb/claude-skills --skill git-workflow

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

详细介绍

Git 工作流

适用于常见 Git 操作的引导式工作流,通过结构化步骤提高效率。

PR 准备

准备拉取请求时:

  1. 收集背景信息

    • git log main..HEAD --oneline — 列出分支上的所有提交
    • git diff main...HEAD --stat — 查看所有更改的文件
    • git status — 检查是否有未提交的工作
  2. 起草 PR 内容

    • 标题:不超过 70 个字符,描述所做更改(而非分支名称)
    • 正文:概述“原因”,列出关键更改,并添加测试计划
    • 根据提交历史撰写摘要——不要依赖记忆
  3. 推送并创建

    git push -u origin HEAD
    gh pr create --title "..." --body "$(cat <<'EOF'
    ## Summary
    - ...
    
    ## Test plan
    - [ ] ...
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    EOF
    )"
    
  4. 验证 — 使用 gh pr view --web 在浏览器中打开

分支清理

安全清理已合并的分支:

  1. 切换到 main 并拉取最新更改

    git checkout main && git pull
    
  2. 列出已合并的分支(不包括 main/master/develop)

    git branch --merged main | grep -vE '^\*|main|master|develop'
    
  3. 删除本地已合并的分支

    git branch --merged main | grep -vE '^\*|main|master|develop' | xargs -r git branch -d
    
  4. 清理远程跟踪引用

    git fetch --prune
    
  5. 列出没有本地跟踪分支的远程分支(可选)

    git branch -r --merged origin/main | grep -vE 'main|master|develop|HEAD'
    

合并冲突解决

PR 存在冲突时:

  1. 评估冲突范围

    git fetch origin
    git merge origin/main --no-commit --no-ff
    git diff --name-only --diff-filter=U  # List conflicted files
    
  2. 对于每个冲突文件,阅读文件并解决冲突:

    • 如果更改位于不同区域,则保留双方的更改
    • 如果架构上不兼容,则优先采用主分支的方案,并在此基础上重新应用 PR 的意图
  3. 如果变基更简洁(提交较少且没有共享历史):

    git rebase origin/main
    # Resolve conflicts per commit, then:
    git rebase --continue
    
  4. 如果变基过程复杂(冲突较多、架构存在分歧):

    • 中止:git rebase --abort 或 git merge --abort
    • 提取有用的代码:git show origin/branch:path/to/file > /tmp/extracted.txt
    • 手动将更改应用到 main
    • 说明原因并关闭原 PR
  5. 验证 — 运行测试,检查差异是否正确

Monorepo 发布标签

在 Monorepo 中,将标签限定到对应的软件包:

# ❌ Ambiguous in monorepos
git tag v2.1.0

# ✅ Scoped to package
git tag contextbricks-v2.1.0
git push origin contextbricks-v2.1.0

格式:{package-name}-v{semver}

先创建 .gitignore 再初始化

创建新仓库时,务必在首次 git add 之前创建 .gitignore:

cat > .gitignore << 'EOF'
node_modules/
.wrangler/
dist/
.dev.vars
*.log
.DS_Store
.env
.env.local
EOF

git init && git add . && git commit -m "Initial commit"

如果 node_modules 已被跟踪:

git rm -r --cached node_modules/
git commit -m "Remove node_modules from tracking"

私有仓库许可证审查

发布或分享私有仓库之前:

gh repo view --json visibility -q '.visibility'

如果是 PRIVATE,请确保:

  • LICENSE 包含专有权声明(而非 MIT/Apache)
  • package.json 中有 "license": "UNLICENSED" 和 "private": true
  • README 中没有 CONTRIBUTING.md 或“欢迎贡献”相关内容

评论

支持 Markdown