Skip to content
AskSoul

Git 工作流完全指南

概述

Git 是现代软件开发中不可或缺的版本控制工具。本文将介绍 Git 高级操作,详解 Git Flow、GitHub Flow 等工作流,帮助团队提升协作效率。

Git 基础回顾

核心概念

工作区 (Working Directory)
    ↓ git add
暂存区 (Staging Area)
    ↓ git commit
本地仓库 (Local Repository)
    ↓ git push
远程仓库 (Remote Repository)

基础命令

bash
# 初始化仓库
git init

# 克隆仓库
git clone <url>

# 添加文件到暂存区
git add <file>
git add .

# 提交更改
git commit -m "message"

# 查看状态
git status

# 查看提交历史
git log

分支管理

创建与切换分支

bash
# 创建新分支
git branch feature/login

# 切换分支
git checkout feature/login

# 创建并切换(简写)
git checkout -b feature/login

# 使用 switch(现代方式)
git switch -c feature/login

合并分支

bash
# 普通合并
git checkout main
git merge feature/login

# 快进合并(无冲突)
# Git 直接移动指针

# 三方合并(有冲突)
# Git 需要手动解决冲突

删除分支

bash
# 删除已合并的分支
git branch -d feature/login

# 强制删除分支
git branch -D feature/login

# 删除远程分支
git push origin --delete feature/login

Git Flow 工作流

分支模型

                    master (生产环境)

                        |
                    release/1.0

                        |
develop (开发主分支) ←←←←←←←←←←←←←←←←←←←←←←←←←←
    ↑                       ↓
    |                       |
hotfix/1.0.1           feature/user-auth
    ↑                       ↓
    |                       |

分支类型

分支用途命名规则
master生产环境master/main
develop开发主分支develop
feature功能开发feature/*
release发布准备release/*
hotfix紧急修复hotfix/*

完整流程

bash
# 1. 从 develop 创建功能分支
git checkout -b feature/user-auth develop

# 2. 开发完成后,合并到 develop
git checkout develop
git merge --no-ff feature/user-auth

# 3. 删除功能分支
git branch -d feature/user-auth

# 4. 创建发布分支
git checkout -b release/1.0 develop

# 5. 发布后合并到 master 和 develop
git checkout master
git merge release/1.0
git tag -a v1.0 -m "版本 1.0"

git checkout develop
git merge release/1.0

# 6. 删除发布分支
git branch -d release/1.0

GitHub Flow

适用场景

  • 持续部署的项目
  • 团队规模较小
  • 无多版本并行开发需求

流程

bash
# 1. 创建特性分支
git checkout -b feature/dark-mode

# 2. 开发并提交
git commit -m "添加深色模式支持"

# 3. 推送分支
git push -u origin feature/dark-mode

# 4. 创建 Pull Request

# 5. 代码审查后合并
# 通过 GitHub 界面合并

# 6. 删除分支
git branch -d feature/dark-mode
git push origin --delete feature/dark-mode

高级操作

变基 (Rebase)

bash
# 变基到主分支
git checkout feature/login
git rebase main

# 解决冲突后继续
git rebase --continue

# 中止变基
git rebase --abort

# 交互式变基(修改提交历史)
git rebase -i HEAD~3

暂存 (Stash)

bash
# 暂存当前更改
git stash
git stash save "WIP: 新功能开发"

# 查看暂存列表
git stash list

# 应用最新暂存
git stash pop

# 应用指定暂存
git stash apply stash@{0}

# 删除暂存
git stash drop stash@{0}

重置 (Reset) 与还原 (Revert)

bash
# 重置到指定提交(修改历史)
git reset --soft HEAD~1    # 保留更改在暂存区
git reset --mixed HEAD~1   # 保留更改在工作区
git reset --hard HEAD~1    # 丢弃更改

# 还原指定提交(安全操作)
git revert <commit-hash>

交互式暂存

bash
# 暂存部分文件
git add -p

# 选择性暂存
y - 暂存此区块
n - 不暂存此区块
s - 拆分区块
e - 手动编辑

标签管理

bash
# 创建轻量标签
git tag v1.0.0

# 创建附注标签
git tag -a v1.0.0 -m "版本 1.0.0"

# 查看标签
git tag -l

# 推送标签到远程
git push origin v1.0.0

# 推送所有标签
git push origin --tags

# 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0

子模块

bash
# 添加子模块
git submodule add <repo-url> libs/common

# 克隆包含子模块的仓库
git clone --recursive <repo-url>

# 更新子模块
git submodule update --remote libs/common

# 初始化子模块
git submodule init

调试技巧

查看谁修改了某行

bash
git blame <file>
git blame -L 10,20 <file>

二分查找问题

bash
git bisect start
git bisect bad
git bisect good v1.0.0
# Git 会自动检出中间版本
# 测试后标记 good 或 bad
git bisect reset  # 结束

隐藏追踪

bash
# 查看差异
git diff
git diff --staged

# 查看简略信息
git diff --stat

# 对比分支
git diff main..feature/login

团队协作最佳实践

提交信息规范

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

<body>

<footer>

类型说明:

  • feat: 新功能
  • fix: 修复bug
  • docs: 文档更新
  • style: 代码格式
  • refactor: 重构
  • test: 测试
  • chore: 构建/工具

分支命名规范

feature/user-auth
feature/shopping-cart
bugfix/login-validation
hotfix/security-patch
release/1.0.0

Pull Request 规范

  1. 保持 PR 小而专注
  2. 编写清晰的描述
  3. 关联相关 issue
  4. 要求代码审查
  5. 通过所有 CI 检查

常见问题处理

合并冲突

bash
# 解决冲突后
git add <resolved-files>
git commit -m "Merge branch 'feature/login'"

撤销 Push

bash
# 使用 revert(安全)
git revert <commit>
git push

# 使用 reset(需谨慎)
git reset --hard <commit>
git push --force

清理远程已删除分支

bash
git fetch -p
git branch -vv  # 查看追踪状态

总结

掌握 Git 工作流能显著提升团队协作效率:

  • 选择适合团队规模的工作流
  • 养成良好的提交习惯
  • 善用分支管理功能
  • 熟练使用高级命令