CodeL
以前端为翼,以 AI 为脑,向全栈而行
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 分支命名规范 #

分支类型 命名规则 示例 权限
主分支 mainmaster 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 main

3.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

流程

  1. develop 创建 feature 开发功能
  2. 功能完成 → 合并回 develop
  3. 发布 → 从 develop 创建 release 测试
  4. 测试通过 → release 合并到 main + develop
  5. 线上 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