前面学完 Git 基础命令、版本回退、忽略文件等用法,本篇将讲解Git 分支原理、分支创建 / 切换 / 合并 / 冲突解决、git stash暂存技巧、分支管理规范,以及 GitHub 仓库搭建、本地远程联动、团队多人协同开发流程
一、Git 分支
分支
- Git 初始化
git init会自动创建 master 主分支,所有默认提交都会移动 master 分支指针。 - master 没有任何特殊性,和普通分支完全一致,只是行业约定它代表稳定上线代码。
- 行业通用约定:
master/stable:稳定正式分支,只存放上线版本代码develop:开发主分支,存放最新迭代功能代码
- Git 分支底层是指针引用,并非像 SVN 一样完整复制文件,创建分支速度极快、几乎不占用空间。
HEAD指针:专门指向当前所处分支,切换分支本质就是移动 HEAD 指针。
二、分支基础操作命令
1 查看 / 创建分支
bash
# 查看所有本地分支
git branch
# 单纯创建分支(不切换)
git branch 分支名
# 切换分支
git checkout 分支名
# 创建分支并直接切换(最常用)
git checkout -b 分支名
2 分支删除规则
- 禁止删除当前正在使用的分支,需先切换到其他分支再删除
- 普通删除(仅删除已合并无改动分支)
bash
git branch -d 分支名
- 强制删除(分支有修改未合并,强行删除)
bash
git branch -D 分支名
3 分支合并
- 先切换到目标合并分支(一般切回 master)
- 执行合并命令
bash
git merge 待合并分支名
- 无代码冲突时自动合并完成,合并完成后可清理无用开发分支
三、分支冲突详解
1 冲突产生原因
两个分支修改了同一个文件的同一行代码,Git 无法自动判定保留内容,触发代码冲突。
2 冲突文件标识
bash
<<<<<<<<<< HEAD
当前所在分支代码内容
==========
被合并分支代码内容
>>>>>>>>>> 冲突分支名
3 冲突解决步骤
- 打开冲突文件,手动删除冲突标记,保留最终需要的代码
- 保存文件后执行提交
bash
git add .
git commit -m "解决分支合并冲突"
- 图形化查看分支提交与冲突日志
bash
git log --graph
四、git stash 工作区暂存
1 适用场景
- 正在分支开发功能,代码写一半未完成,临时需要切分支修复 Bug
- 代码误写到错误分支,需要临时保存转移代码
- 不想提交半成品代码,临时存放所有未提交修改
2 全套 stash 命令
bash
# 暂存所有工作区+暂存区修改,清空工作区
git stash
# 查看所有暂存记录
git stash list
# 恢复最近一次暂存内容,并删除暂存记录
git stash pop
# 仅恢复暂存内容,保留暂存记录
git stash apply
# 删除指定暂存记录
git stash drop
# 清空所有暂存
git stash clear
注意:多次 stash 需要依次恢复提交,避免连续恢复引发代码冲突。
五、分支管理策略
1 五大分支架构
- stable 稳定分支:线上正式环境分支,仅用于版本发布,不直接开发
- develop 开发主分支:团队日常统一开发分支,所有功能最终合并至此
- feature 功能分支:基于 develop 创建,单人开发独立新功能,开发完成合并回 develop
- release 预发布分支:功能全部开发完成后,从 develop 拉出,集中测试修复 BUG,测试通过合并 stable 与 develop
- bugfix 热修复分支:线上出现紧急 BUG,基于 stable 创建,修复后同步合并 stable 与 develop
2 开发流程
- 从 develop 拉取 feature 分支开发新功能
- 功能自测完成合并至 develop
- 迭代版本齐全后拉出 release 测试分支
- 测试无误合并 stable 发布上线
- 线上 BUG 走 bugfix 分支快速修复
六、GitHub 仓库搭建与本地远程
1 GitHub 基础操作
- 进入 GitHub 官网注册账号,完成邮箱验证
- 点击 New repository 创建远程空仓库,填写仓库名、选择公开 / 私有
2 本地关联远程仓库
bash
# 关联远程仓库 origin为远程仓库默认别名
git remote add origin 远程仓库地址
# 查看远程仓库信息
git remote show origin
# 查看所有远程+本地分支
git branch -a
# 查看分支详细提交信息
git branch -av
3 本地代码推送到远程
bash
# 第一次推送,建立本地与远程分支关联
git push -u origin master
# 后续直接推送
git push origin master
4 本地仓库独立用户配置
仅对当前仓库生效,多用于模拟多用户协作
bash
git config --local user.name "用户名"
git config --local user.email "邮箱"
七、团队多人协作开发
1 拉取远程项目
bash
# 克隆远程仓库到本地,文件夹默认同名
git clone 远程仓库地址
# 自定义本地仓库名称
git clone 远程仓库地址 自定义文件夹名
2 同步团队最新代码
bash
# 拉取远程最新代码合并到本地
git pull
- fast-forward:无冲突自动合并
- 代码冲突:手动解决冲突后重新提交推送
3 本地分支推送至远程
bash
# 首次推送本地新分支到远程并建立关联
git push -u origin 本地分支名
# 简写
git push --set-upstream origin 分支名
4 拉取远程分支到本地
bash
# 拉取远程分支并创建本地同名分支
git checkout -b 本地分支名 origin/远程分支名
# 快速追踪远程分支
git checkout --track origin/远程分支名
5 删除远程分支
bash
# 删除远程指定分支
git push origin --delete 分支名
# 清理本地无效远程分支缓存
git remote prune origin
八、协作开发注意事项
- 开发前优先
git pull拉取最新代码,避免大规模冲突 - 个人功能统一在 feature 分支开发,禁止直接提交 stable 主分支
- 半成品代码使用
git stash暂存,不随意提交无效提交记录 - 合并代码前先自测,提交备注清晰写明
- 线上 BUG 走专属 bugfix 分支修复,不直接改动线上稳定代码