mcpField
G
git-workflow

git-workflow

github.com/galaxy-dawn开发6.0k379 次安装2 周前更新
代码仓库

关于 git-workflow

git-workflow 为团队和开发者整理 Git 提交、分支、合并与协作规范。指南还覆盖冲突处理、版本标签和日常开发、修复及发布流程。

主要功能

  1. 01遵循 Conventional Commits
  2. 02定义分支类型与命名规则
  3. 03说明 rebase 和合并策略
  4. 04提供冲突处理建议
  5. 05规范语义化版本与协作

适用场景

  1. 01统一团队提交信息格式
  2. 02规划功能开发与热修复分支
  3. 03选择分支同步和合并方式
  4. 04准备发布标签与代码审查

安装

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

$npx skills add https://github.com/galaxy-dawn/claude-scholar --skill git-workflow

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples/
commit-messages.txt
workflow-commands.sh
references/
advanced-usage.md
branching-strategies.md
collaboration.md
commit-conventions.md
conflict-resolution.md
gitignore-guide.md
merge-strategies.md

详细介绍

Git 工作流规范

本文档定义了项目的 Git 使用规范,包括提交消息格式、分支管理策略、工作流、合并策略等。遵循这些规范有助于提高协作效率、实现可追溯性、支持自动化并减少冲突。

提交消息规范

项目遵循 Conventional Commits 规范:

<type>(<scope>): <subject>

<body>

<footer>
类型参考
类型描述示例
feat新功能feat(user): add user export functionality
fix修复错误fix(login): fix captcha not refreshing
docs更新文档docs(api): update API documentation
refactor重构refactor(utils): refactor utility functions
perf性能改进perf(list): optimize list performance
test测试相关test(user): add unit tests
chore其他更改chore: update dependency versions
主题规则
  • 以动词开头:add、fix、update、remove、optimize
  • 不超过 50 个字符
  • 末尾不加句号

如需了解更详细的约定和示例,请参阅 references/commit-conventions.md。

分支管理策略

分支类型
分支类型命名约定描述生命周期
mastermaster主分支,可发布状态永久
developdevelop开发分支,最新集成代码永久
featurefeature/feature-name功能分支完成后删除
bugfixbugfix/issue-description错误修复分支修复后删除
hotfixhotfix/issue-description紧急修复分支修复后删除
releaserelease/version-number发布分支发布后删除
分支命名示例
feature/user-management          # User management feature
feature/123-add-export          # Issue-linked feature
bugfix/login-error              # Login error fix
hotfix/security-vulnerability   # Security vulnerability fix
release/v1.0.0                  # Version release
分支保护规则

master 分支:

  • 不允许直接推送
  • 必须通过 Pull Request 合并
  • 必须通过 CI 检查
  • 至少需要一名 Code Review 审核者批准

develop 分支:

  • 限制直接推送
  • 建议通过 Pull Request 合并
  • 必须通过 CI 检查

如需了解详细的分支策略和工作流,请参阅 references/branching-strategies.md。

工作流

日常开发工作流
# 1. Sync latest code
git checkout develop
git pull origin develop

# 2. Create feature branch
git checkout -b feature/user-management

# 3. Develop and commit
git add .
git commit -m "feat(user): add user list page"

# 4. Push to remote
git push -u origin feature/user-management

# 5. Create Pull Request and request Code Review

# 6. Merge to develop (via PR)

# 7. Delete feature branch
git branch -d feature/user-management
git push origin -d feature/user-management
热修复工作流
# 1. Create fix branch from master
git checkout master
git pull origin master
git checkout -b hotfix/critical-bug

# 2. Fix and commit
git add .
git commit -m "fix(auth): fix authentication bypass vulnerability"

# 3. Merge to master
git checkout master
git merge --no-ff hotfix/critical-bug
git tag -a v1.0.1 -m "hotfix: fix authentication bypass vulnerability"
git push origin master --tags

# 4. Sync to develop
git checkout develop
git merge --no-ff hotfix/critical-bug
git push origin develop
发布工作流
# 1. Create release branch
git checkout develop
git checkout -b release/v1.0.0

# 2. Update version numbers and documentation

# 3. Commit version update
git add .
git commit -m "chore(release): prepare release v1.0.0"

# 4. Merge to master
git checkout master
git merge --no-ff release/v1.0.0
git tag -a v1.0.0 -m "release: v1.0.0 official release"
git push origin master --tags

# 5. Sync to develop
git checkout develop
git merge --no-ff release/v1.0.0
git push origin develop

合并策略

Merge 与 Rebase
特性MergeRebase
历史记录保留完整历史线性历史
使用场景公共分支私有分支
推荐用于合并到主分支同步上游代码
建议
  • 功能分支同步 develop:使用 rebase
  • 功能分支合并到 develop:使用 merge --no-ff
  • develop 合并到 master:使用 merge --no-ff
# ✅ Recommended: Feature branch syncing develop
git checkout feature/user-management
git rebase develop

# ✅ Recommended: Merge feature branch to develop
git checkout develop
git merge --no-ff feature/user-management

# ❌ Not recommended: Rebase on public branch
git checkout develop
git rebase feature/xxx  # Dangerous operation

项目约定:将功能分支合并时使用 --no-ff,以保留分支历史。

如需了解详细的合并策略和技巧,请参阅 references/merge-strategies.md。

冲突解决

识别冲突
<<<<<<< HEAD
// Current branch code
const name = 'Alice'
=======
// Branch being merged
const name = 'Bob'
>>>>>>> feature/user-management
解决冲突
# 1. View conflicting files
git status

# 2. Manually edit files to resolve conflicts

# 3. Mark as resolved
git add <file>

# 4. Complete the merge
git commit  # merge conflict
# or
git rebase --continue  # rebase conflict
冲突解决策略
# Keep current branch version
git checkout --ours <file>

# Keep incoming branch version
git checkout --theirs <file>

# Abort merge
git merge --abort
git rebase --abort
预防冲突
  1. 定期同步代码 - 每天开始工作前拉取最新代码
  2. 小步提交 - 经常提交小幅更改
  3. 模块化功能 - 在不同文件中实现不同功能
  4. 沟通 - 避免同时修改同一个文件

如需了解详细的冲突处理和高级技巧,请参阅 references/conflict-resolution.md。

.gitignore 规范

基本规则
# Ignore all .log files
*.log

# Ignore directories
node_modules/

# Ignore directory at root
/temp/

# Ignore files in all directories
**/.env

# Don't ignore specific files
!.gitkeep
常见 .gitignore
node_modules/
dist/
build/
.idea/
.vscode/
.env
.env.local
logs/
*.log
.DS_Store
Thumbs.db

如需了解详细的 .gitignore 模式和项目专属配置,请参阅 references/gitignore-guide.md。

标签管理

采用 Semantic Versioning:

MAJOR.MINOR.PATCH[-PRERELEASE]
版本变更规则
  • MAJOR:不兼容的 API 变更(v1.0.0 → v2.0.0)
  • MINOR:向后兼容的新功能(v1.0.0 → v1.1.0)
  • PATCH:向后兼容的错误修复(v1.0.0 → v1.0.1)
标签操作
# Create annotated tag (recommended)
git tag -a v1.0.0 -m "release: v1.0.0 official release"

# Push tags
git push origin v1.0.0
git push origin --tags

# View tags
git tag
git show v1.0.0

# Delete tag
git tag -d v1.0.0
git push origin :refs/tags/v1.0.0

团队协作规范

Pull Request 规范

PR 应包含:

## Change Description


## Change Type
- [ ] New feature (feat)
- [ ] Bug fix (fix)
- [ ] Code refactoring (refactor)

## Testing Method


## Related Issue
Closes #xxx

## Checklist
- [ ] Code has been self-tested
- [ ] Documentation has been updated
代码审查规范

审查重点:

  • 代码质量:清晰易读、命名恰当、无重复代码
  • 逻辑正确性:业务逻辑正确,并处理边界情况
  • 安全性:无安全漏洞,保护敏感信息
  • 性能:无明显性能问题,妥善释放资源

有关详细的协作规范和最佳实践,请参阅 references/collaboration.md。

常见问题

修改上一次提交
# Amend commit content (not yet pushed)
git add forgotten-file.ts
git commit --amend --no-edit

# Amend commit message
git commit --amend -m "new commit message"
推送被拒绝
# Pull then push
git pull origin master
git push origin master

# Use rebase for cleaner history
git pull --rebase origin master
git push origin master
回滚到之前的版本
# Reset to specific commit (discards subsequent commits)
git reset --hard abc123

# Create reverse commit (recommended, preserves history)
git revert abc123
暂存当前工作
git stash save "work in progress"
git stash list
git stash pop
查看文件修改历史
git log -- <file>             # Commit history
git log -p -- <file>          # Detailed content
git blame <file>              # Per-line author

最佳实践总结

提交规范

✅ 推荐:

  • 遵循 Conventional Commits 规范
  • 编写清晰的提交消息,说明所做更改
  • 一次提交只包含一项逻辑更改
  • 提交前运行代码检查

❌ 禁止:

  • 使用含糊的提交消息
  • 在一次提交中包含多个无关更改
  • 提交敏感信息(密码、密钥)
  • 直接在 main 分支上开发
分支管理

✅ 推荐:

  • 使用功能分支进行开发
  • 定期同步 main 分支代码
  • 功能完成后及时删除分支
  • 使用 --no-ff 合并以保留历史记录

❌ 禁止:

  • 直接在 main 分支上开发
  • 长期保留未合并的功能分支
  • 使用不规范的分支命名
  • 在公共分支上执行变基
代码审查

✅ 推荐:

  • 所有代码都通过 Pull Request 提交
  • 合并前至少获得一位审查者的批准
  • 提供有建设性的反馈

❌ 禁止:

  • 未经审查就合并
  • 审查自己的代码

其他资源

参考文件

有关特定主题的详细指南:

  • references/commit-conventions.md - 提交消息的详细规范和示例
  • references/branching-strategies.md - 全面的分支管理策略
  • references/merge-strategies.md - 合并、变基和冲突解决策略
  • references/conflict-resolution.md - 详细的冲突处理与预防方法
  • references/advanced-usage.md - Git 性能优化、安全性、子模块和高级技巧
  • references/collaboration.md - Pull Request 和代码审查指南
  • references/gitignore-guide.md - .gitignore 模式和项目专属配置
示例文件

examples/ 中的可用示例:

  • examples/commit-messages.txt - 优质提交消息示例
  • examples/workflow-commands.sh - 常用工作流命令片段

总结

本文档定义了项目的 Git 规范:

  1. 提交消息 - 遵循 Conventional Commits 规范
  2. 分支管理 - master/develop/feature/bugfix/hotfix/release 分支策略
  3. 工作流 - 日常开发、紧急修复和发布的标准流程
  4. 合并策略 - 使用 rebase 同步功能分支,使用 merge --no-ff 进行合并
  5. 标签管理 - 语义化版本控制、附注标签
  6. 冲突解决 - 定期同步、小规模提交、团队沟通

遵循这些规范有助于提高协作效率、确保代码质量并简化版本管理。

评论

支持 Markdown