← 返回首页
文章
2026-03-31
Git 完整指南
Git 完整指南:规范、命令、实战与团队协作 一份覆盖个人开发 + 团队协作全流程的 Git 手册,可直接作为项目规范文档使用。 目录 一、核心概念 二、团队规范 三、常用命令速查 四、实战场景 五、工作流选择 六、常见...
Git 完整指南:规范、命令、实战与团队协作 #
一份覆盖个人开发 + 团队协作全流程的 Git 手册,可直接作为项目规范文档使用。
目录 #
一、核心概念 #
1.1 四大区域 #
| 区域 | 说明 |
|---|---|
| 工作区 | 本地编辑的文件(肉眼可见) |
| 暂存区 | git add 后存放待提交内容 |
| 本地仓库 | git commit 后的版本历史 |
| 远程仓库 | GitHub/GitLab 等云端存储 |
1.2 核心名词 #
| 名词 | 解释 |
|---|---|
| branch | 独立的代码开发线,互不干扰 |
| commit | 代码的一次快照,有唯一哈希值 |
| merge | 将一个分支合并到另一个 |
| pull | 拉取远程代码(= fetch + merge) |
| push | 推送本地代码到远程 |
| conflict | 多人修改同一行导致的冲突 |
| stash | 暂存未提交的代码,稍后恢复 |
1.3 文件状态流转 #
未跟踪 → git add → 已暂存 → git commit → 已提交
↓ git reset
未暂存二、团队规范 #
2.1 分支命名规范 #
| 分支类型 | 命名规则 | 示例 | 权限 |
|---|---|---|---|
| 主分支 | main 或 master |
main |
仅管理员可合并 |
| 开发分支 | develop |
develop |
仅管理员可合并 |
| 功能分支 | feature/功能名-开发者 |
feature/login-zhangsan |
开发者自主创建 |
| 修复分支 | bugfix/问题号-描述 |
bugfix/101-login-error |
开发者自主创建 |
| 热修复 | hotfix/问题号-描述 |
hotfix/102-payment-crash |
核心开发者创建 |
| 发布分支 | release/版本号 |
release/v1.0.0 |
管理员创建 |
2.2 Commit 提交规范 #
格式:类型: 简要描述(不超过 50 字)
| 类型 | 说明 | 示例 |
|---|---|---|
feat |
新功能 | feat: 完成用户登录接口 |
fix |
修复 bug | fix: 修复支付页面崩溃 |
docs |
文档修改 | docs: 更新部署文档 |
style |
格式调整(不影响逻辑) | style: 优化代码缩进 |
refactor |
重构(无新功能/无 bug 修复) | refactor: 重构用户模块 |
test |
测试相关 | test: 添加登录单元测试 |
chore |
构建/工具/依赖 | chore: 升级 webpack 版本 |
2.3 提交前检查清单 #
- ✅ 先拉取最新代码(
git pull) - ✅ 一个 commit 只做一件事
- ✅ 不提交
node_modules、.env、编译产物 - ✅ 本地测试通过,无语法错误
- ✅ 不直接向
main/develop提交
2.4 合并规范 #
- 功能完成 → 提交 Pull Request/Merge Request
- 必须经过 Code Review 才能合并
- 合并前解决所有冲突,本地测试通过
- 禁止
git push -f到公共分支
三、常用命令速查 #
3.1 配置命令 #
# 查看版本
git --version
# 配置用户名/邮箱(首次必做)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 查看配置
git config --list
# 设置默认分支名
git config --global init.defaultBranch main3.2 仓库操作 #
# 初始化
git init
# 克隆
git clone <仓库地址>
git clone -b <分支名> <仓库地址> # 克隆指定分支
# 查看远程地址
git remote -v
# 添加远程仓库
git remote add origin <仓库地址>3.3 分支操作 #
# 查看分支
git branch # 本地
git branch -r # 远程
git branch -a # 全部
# 创建分支
git branch <分支名> # 仅创建
git checkout -b <分支名> # 创建并切换
git switch -c <分支名> # 新版推荐
# 切换分支
git checkout <分支名>
git switch <分支名> # 新版推荐
# 删除分支
git branch -d <分支名> # 本地
git push origin --delete <分支名> # 远程
# 重命名
git branch -m <旧名> <新名>3.4 代码提交 #
# 查看状态
git status
# 添加到暂存区
git add <文件名> # 单文件
git add . # 全部
# 提交
git commit -m "提交信息"
git commit --amend # 追加提交(覆盖上一次)
# 撤销暂存
git reset HEAD <文件名>
# 撤销修改(慎用!丢失未提交代码)
git checkout -- <文件名>3.5 远程操作 #
# 拉取
git pull
git pull origin <分支名>
# 推送
git push
git push -u origin <分支名> # 新分支首次推送
git push -f # 强推(慎用!)3.6 合与冲突 #
# 合并
git merge <分支名>
# 查看合并日志
git log --oneline --graph
# 取消合并
git merge --abort
# 解决冲突后提交
git add .
git commit -m "fix: 解决合并冲突"3.7 回滚操作 #
# 查看日志
git log
git log --oneline # 简洁版
git reflog # 操作日志(找回丢失代码)
# 回退(保留代码)
git reset --soft HEAD^
# 回退(删除代码,慎用!)
git reset --hard <哈希值>
# 安全撤销(生成新 commit)
git revert <哈希值>3.8 暂存命令 #
# 暂存当前工作
git stash
git stash save "备注"
# 查看暂存列表
git stash list
# 恢复
git stash pop # 恢复并删除
git stash apply stash@{0} # 恢复指定
# 清空暂存
git stash clear四、实战场景 #
场景 1:首次参与项目 #
git clone https://github.com/xxx/project.git
cd project
git checkout -b feature/my-feature develop
# 开始开发...场景 2:日常开发流程 #
git status # 查看改动
git add . # 添加
git commit -m "feat: 新功能" # 提交
git pull origin feature/my-feature # 拉取最新(避免冲突)
git push # 推送场景 3:切换分支修复 bug #
git stash save "暂存当前开发" # 暂存未完成代码
git checkout bugfix/101-error # 切换到 bug 分支
# 修复 bug...
git add . && git commit -m "fix: 修复问题"
git push
git checkout feature/my-feature # 切回原分支
git stash pop # 恢复暂存代码场景 4:功能完成,合并到 develop #
# 方式一:通过 PR/MR(推荐)
git push origin feature/my-feature
# 在 GitHub/GitLab 创建 Pull Request
# 选择源分支:feature/my-feature,目标:develop
# 等待 Code Review 通过后合并
# 方式二:本地合并
git checkout develop
git merge feature/my-feature
git push场景 5:解决冲突 #
# 拉取代码提示冲突后
# 1. 打开冲突文件,编辑内容
# 删除 <<<<<<< HEAD ====== >>>>>>> branch 标记
# 2. 保留需要的代码
git add .
git commit -m "fix: 解决冲突"
git push场景 6:线上紧急修复 #
git checkout -b hotfix/102-crash main
# 修复问题...
git add . && git commit -m "fix: 紧急修复"
git push
# 合并到 main(上线)
git checkout main
git merge hotfix/102-crash
git push
# 同步到 develop
git checkout develop
git merge hotfix/102-crash
git push
# 删除热修复分支
git branch -d hotfix/102-crash场景 7:回滚错误提交 #
# 查看日志找错误 commit
git log --oneline
# 方式一:安全撤销(推荐)
git revert a1b2c3d # 生成新 commit 撤销
# 方式二:强制回退(慎用!)
git reset --hard a1b2c3d
git push -f场景 8:清理已删除的远程分支 #
git fetch --prune # 清理本地缓存的已删除远程分支五、工作流选择 #
5.1 GitFlow(中大型项目) #
适用:版本迭代明确、有测试环境的团队
main ← release ← develop ← feature
↓
hotfix → main + develop流程:
- 从
develop创建feature开发功能 - 功能完成 → 合并回
develop - 发布 → 从
develop创建release测试 - 测试通过 →
release合并到main+develop - 线上 bug → 从
main创建hotfix,修复后合并回main+develop
5.2 GitHub Flow(敏捷/开源项目) #
适用:持续部署、快速迭代
main ← feature → PR → merge → 自动部署规则:
- 只有
main一个长期分支 - 所有功能从
main创建分支 - 通过 Pull Request 合并
- 合即部署
5.3 GitLab Flow(折中方案) #
适用:企业内部项目,多环境
main → staging → production特点:
- 分支对应环境
- 支持灰度发布
- 合并顺序:feature → main → staging → production
六、常见问题解决 #
问题 1:误提交敏感信息 #
# 从历史中删除文件(慎用!)
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch <文件名>" \
--prune-empty --tag-name-filter cat -- --all
git push -f更好的做法:使用 BFG Repo-Cleaner
问题 2:提交到错误分支 #
git stash # 暂存
git checkout <正确分支>
git stash pop # 恢复
git add . && git commit -m "xxx"问题 3:无法推送(远程领先) #
git pull --rebase # 变基拉取
git push问题 4:合并丢失代码 #
git reflog # 查找丢失的 commit
git reset --hard <哈希值>问题 5:撤销已 push 的 commit #
git revert <哈希值> # 安全,生成新 commit
git push七、工具推荐 #
7.1 可视化工具 #
| 工具 | 特点 | 推荐 |
|---|---|---|
| VS Code Git | 内置,轻量 | ✅ 日常首选 |
| SourceTree | 免费,功能全面 | ✅ 新手友好 |
| GitKraken | 界面美观,跨平台 | 中 |
| Tower | Mac 专业工具 | 高级用户 |
7.2 效率工具 #
| 工具 | 作用 |
|---|---|
| cz-git | 交互式 commit,自动规范格式 |
| gitignore.io | 自动生成 .gitignore |
| GitLens(VS Code 插件) | 查看代码作者、历史 |
GitHub CLI (gh) |
命令行操作 PR/Issue |
7.3 快捷键(VS Code) #
| 功能 | Mac | Windows |
|---|---|---|
| 提交 | Cmd+Enter |
Ctrl+Enter |
| 查看 history | 右键文件 → View History | 同左 |
八、总结速记 #
| 类型 | 核心要点 |
|---|---|
| 规范 | 分支命名 + commit 格式 + Code Review |
| 高频命令 | add/commit/pull/push/branch/stash |
| 工作流 | 小项目 GitHub Flow,大项目 GitFlow |
| 安全 | 禁止强推公共分支,提交前先 pull |
最后更新:2026-03-28