ManagingGit managing-git

管理Git工作流,包括分支、提交和拉取请求。用于与Git工作、创建提交、打开PR、管理分支、解决冲突或当被问及版本控制最佳实践时。

DevOps 0 次安装 0 次浏览 更新于 3/2/2026

管理 Git

功能开发工作流程

复制此清单并跟踪进度:

功能开发进度:
- [ ] 第一步:从主分支创建功能分支
- [ ] 第二步:进行原子提交的更改
- [ ] 第三步:基于最新的主分支进行变基
- [ ] 第四步:推送并创建PR
- [ ] 第五步:处理审查反馈
- [ ] 第六步:批准后合并

分支策略

GitHub 流程(推荐大多数项目使用)

main ──●────●────●────●── (始终可部署)
        \          /
feature  └──●──●──┘
  • main 始终可部署
  • 从主分支创建功能分支
  • PR + 审查 + 合并
  • 合并后部署

Git 流程(适用于基于发布的项目)

main     ──●─────────────●────── (仅发布)
            \           /
release      └────●────┘
                 /
develop  ──●──●────●──●──●──
            \     /
feature      └──●┘

提交约定

约定提交格式

<type>(<scope>): <description>

[可选正文]

[可选脚注]

类型

类型 描述
feat 新功能
fix 修复bug
docs 仅文档
style 格式化,无逻辑变化
refactor 代码更改,既不修复bug也不添加功能
perf 性能改进
test 添加/更新测试
chore 构建过程,依赖项
ci CI配置

示例

feat(auth): add OAuth2 login support

Implements Google and GitHub OAuth providers.
Closes #123

BREAKING CHANGE: Session tokens now expire after 24h
fix(api): handle null response from payment gateway

Previously caused 500 error when gateway returned null.
Now returns appropriate error message to user.

分支命名

<type>/<ticket-id>-<short-description>

# 示例
feature/AUTH-123-oauth-login
fix/BUG-456-null-pointer
chore/TECH-789-upgrade-deps

拉取请求工作流程

复制此清单以创建PR:

PR清单:
- [ ] 代码遵循项目约定
- [ ] 为更改添加/更新了测试
- [ ] 本地所有测试通过
- [ ] 与主分支无合并冲突
- [ ] 如有需要,文档已更新
- [ ] 未引入安全漏洞
- [ ] PR描述解释了"为什么"

PR模板

## 摘要
[更改的简要描述]

## 更改
- [更改1]
- [更改2]

## 测试
- [ ] 单元测试添加/更新
- [ ] 手动测试执行
- [ ] E2E测试通过

## 截图(如果UI更改)
[Before/After截图]

PR大小指南

大小 行更改 审查指导
XS < 50 快速审查
S 50-200 标准审查
M 200-500 彻底审查
L 500+ 如可能则拆分

常见Git命令

日常工作流程

# 开始新功能
git checkout main
git pull
git checkout -b feature/TICKET-123-description

# 提交更改
git add -p  # 交互式阶段
git commit -m "feat: description"

# 与主分支保持同步
git fetch origin main
git rebase origin/main

# 推送并创建PR
git push -u origin HEAD

修正错误

# 修改上次提交(推送前)
git commit --amend

# 撤销上次提交(保留更改)
git reset --soft HEAD~1

# 撤销上次提交(丢弃更改)
git reset --hard HEAD~1

# 撤销已推送的提交
git revert <commit-hash>

# 交互式变基以清理
git rebase -i HEAD~3

高级操作

# 选择特定提交
git cherry-pick <commit-hash>

# 查找破坏提交
git bisect start
git bisect bad HEAD
git bisect good <known-good-commit>

# 带消息的暂存
git stash push -m "WIP: feature description"
git stash list
git stash pop

提交验证

推送前验证提交:

提交验证:
- [ ] 每个提交都有清晰、描述性的提交信息
- [ ] 提交类型与更改匹配(feat, fix等)
- [ ] 无WIP或临时提交
- [ ] 未提交任何机密或凭证
- [ ] 更改是原子的(每个提交一个逻辑更改)

如果验证失败,请使用git rebase -i在推送前清理提交历史。