Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作

前面学完 Git 基础命令、版本回退、忽略文件等用法,本篇将讲解Git 分支原理、分支创建 / 切换 / 合并 / 冲突解决、git stash暂存技巧、分支管理规范,以及 GitHub 仓库搭建、本地远程联动、团队多人协同开发流程

一、Git 分支

分支

  1. Git 初始化git init会自动创建 master 主分支,所有默认提交都会移动 master 分支指针。
  2. master 没有任何特殊性,和普通分支完全一致,只是行业约定它代表稳定上线代码。
  3. 行业通用约定:
    • master/stable:稳定正式分支,只存放上线版本代码
    • develop:开发主分支,存放最新迭代功能代码
  4. Git 分支底层是指针引用,并非像 SVN 一样完整复制文件,创建分支速度极快、几乎不占用空间。
  5. HEAD指针:专门指向当前所处分支,切换分支本质就是移动 HEAD 指针。

二、分支基础操作命令

1 查看 / 创建分支

bash 复制代码
# 查看所有本地分支
git branch
# 单纯创建分支(不切换)
git branch 分支名
# 切换分支
git checkout 分支名
# 创建分支并直接切换(最常用)
git checkout -b 分支名

2 分支删除规则

  1. 禁止删除当前正在使用的分支,需先切换到其他分支再删除
  2. 普通删除(仅删除已合并无改动分支)
bash 复制代码
git branch -d 分支名
  1. 强制删除(分支有修改未合并,强行删除)
bash 复制代码
git branch -D 分支名

3 分支合并

  1. 先切换到目标合并分支(一般切回 master)
  2. 执行合并命令
bash 复制代码
git merge 待合并分支名
  1. 无代码冲突时自动合并完成,合并完成后可清理无用开发分支

三、分支冲突详解

1 冲突产生原因

两个分支修改了同一个文件的同一行代码,Git 无法自动判定保留内容,触发代码冲突。

2 冲突文件标识

bash 复制代码
<<<<<<<<<< HEAD
当前所在分支代码内容
==========
被合并分支代码内容
>>>>>>>>>> 冲突分支名

3 冲突解决步骤

  1. 打开冲突文件,手动删除冲突标记,保留最终需要的代码
  2. 保存文件后执行提交
bash 复制代码
git add .
git commit -m "解决分支合并冲突"
  1. 图形化查看分支提交与冲突日志
bash 复制代码
git log --graph

四、git stash 工作区暂存

1 适用场景

  1. 正在分支开发功能,代码写一半未完成,临时需要切分支修复 Bug
  2. 代码误写到错误分支,需要临时保存转移代码
  3. 不想提交半成品代码,临时存放所有未提交修改

2 全套 stash 命令

bash 复制代码
# 暂存所有工作区+暂存区修改,清空工作区
git stash
# 查看所有暂存记录
git stash list
# 恢复最近一次暂存内容,并删除暂存记录
git stash pop
# 仅恢复暂存内容,保留暂存记录
git stash apply
# 删除指定暂存记录
git stash drop
# 清空所有暂存
git stash clear

注意:多次 stash 需要依次恢复提交,避免连续恢复引发代码冲突。

五、分支管理策略

1 五大分支架构

  1. stable 稳定分支:线上正式环境分支,仅用于版本发布,不直接开发
  2. develop 开发主分支:团队日常统一开发分支,所有功能最终合并至此
  3. feature 功能分支:基于 develop 创建,单人开发独立新功能,开发完成合并回 develop
  4. release 预发布分支:功能全部开发完成后,从 develop 拉出,集中测试修复 BUG,测试通过合并 stable 与 develop
  5. bugfix 热修复分支:线上出现紧急 BUG,基于 stable 创建,修复后同步合并 stable 与 develop

2 开发流程

  1. 从 develop 拉取 feature 分支开发新功能
  2. 功能自测完成合并至 develop
  3. 迭代版本齐全后拉出 release 测试分支
  4. 测试无误合并 stable 发布上线
  5. 线上 BUG 走 bugfix 分支快速修复

六、GitHub 仓库搭建与本地远程

1 GitHub 基础操作

  1. 进入 GitHub 官网注册账号,完成邮箱验证
  2. 点击 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

八、协作开发注意事项

  1. 开发前优先git pull拉取最新代码,避免大规模冲突
  2. 个人功能统一在 feature 分支开发,禁止直接提交 stable 主分支
  3. 半成品代码使用git stash暂存,不随意提交无效提交记录
  4. 合并代码前先自测,提交备注清晰写明
  5. 线上 BUG 走专属 bugfix 分支修复,不直接改动线上稳定代码
相关推荐
深入云栈5 分钟前
Netty 4.2.x 源码深度解析 (二十三):ByteBuf 核心设计 —— 索引、类型与零拷贝
java·后端·架构
爱笑的k1130 分钟前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
wang_shu_mo_ran1 小时前
MyBatis 从入门到进阶(一)
java·spring·mybatis
X1A0RAN2 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
量化分析码农3 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
猫猫不是喵喵.3 小时前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
熊猫钓鱼>_>3 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮3 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
曲径海盗3 小时前
Try-Except怎么用,3个追问解答在自动化下的应用
java·jvm·oracle
YIN_尹4 小时前
【git原理与使用】git基本操作及底层原理(二)
大数据·git·elasticsearch