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