当前位置: 首页 > news >正文

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 查看 / 创建分支

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

2 分支删除规则

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

3 分支合并

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

三、分支冲突详解

1 冲突产生原因

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

2 冲突文件标识

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

3 冲突解决步骤

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

四、git stash 工作区暂存

1 适用场景

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

2 全套 stash 命令

# 暂存所有工作区+暂存区修改,清空工作区 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 本地关联远程仓库

# 关联远程仓库 origin为远程仓库默认别名 git remote add origin 远程仓库地址 # 查看远程仓库信息 git remote show origin # 查看所有远程+本地分支 git branch -a # 查看分支详细提交信息 git branch -av

3 本地代码推送到远程

# 第一次推送,建立本地与远程分支关联 git push -u origin master # 后续直接推送 git push origin master

4 本地仓库独立用户配置

仅对当前仓库生效,多用于模拟多用户协作

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

八、协作开发注意事项

  1. 开发前优先git pull拉取最新代码,避免大规模冲突
  2. 个人功能统一在 feature 分支开发,禁止直接提交 stable 主分支
  3. 半成品代码使用git stash暂存,不随意提交无效提交记录
  4. 合并代码前先自测,提交备注清晰写明
  5. 线上 BUG 走专属 bugfix 分支修复,不直接改动线上稳定代码
http://www.jsqmd.com/news/855541/

相关文章:

  • 【正式版上线】Open Claw 2.7.5 桌面端一键安装部署教程
  • 三步告别键盘连击:KeyboardChatterBlocker高效使用全攻略
  • C#如何优雅处理引用类型的深拷贝 (十一)
  • Kimi、DeepSeek、阶跃星辰三天融资超百亿,中国AI的“中场战事”刚刚开始
  • 掌握Linux网络设计中的WebSocket服务器
  • 港科大沈劭劼、谭平团队最新成果:开源280万全景数据集,实现零样本立体匹配
  • 测试经理为保障项目按期交付,主动规划核心内容
  • 我开发了一个 AI 表单填写 Chrome 插件:AutoFormX,提升 Web 测试和表单联调效率
  • 3步搞定OFD兼容难题:Ofd2Pdf实战手册
  • Cursor试用限制终极解决方案:3分钟快速重置设备标识实战指南
  • STM32 HAL库驱动中景园0.96寸OLED(SSD1306)避坑指南:从IIC地址到GRAM刷新的完整流程
  • 别再傻傻分不清:一张图看懂BLDC六步换相与PMSM FOC的本质区别与应用选型
  • 不止是省9.9刀:解锁特斯拉Model 3的‘行驶中保持WiFi’功能,打造家庭移动娱乐中心
  • 告别臃肿UI!5K行代码的GuiLite在STM32 HAL库上跑起来了(附工程源码)
  • 避开这3个坑,你的C# + VisionPro相机采集程序才算稳定(WinForm实战)
  • 告别接线混乱!用ESP32的I2C接口驱动LCD1602,5分钟搞定温湿度显示(附完整代码)
  • 从音箱分频到电源净化:聊聊RLC低通滤波器那些意想不到的实用场景
  • 操作系统概述(4)--操作系统运行机制(1):处理机双重模式与中断
  • FPGA管脚不够用?手把手教你用74HC595级联驱动8位数码管(附Verilog代码与仿真)
  • C++ STL常用函数一览表(快速记忆版本)
  • 多模态协作:文本、图像、语音Agent配合
  • Odrive运动控制实战:用STM32的CAN总线读取电机位置和发送位置指令
  • Perplexity历史资料搜索效率提升300%:实测验证的5步精准检索法(附2024最新API调用参数)
  • 构建AI应用时如何借助Taotoken实现模型的灵活选型与降级
  • 《Linux系统编程》Linux基础开发工具 (三):从零实现动态进度条(附回车、换行与缓冲区详解)
  • TPU核心引擎的‘血管网络’:用RTL仿真动画可视化脉动阵列数据流
  • 顶尖销售都在读什么?这三本书揭示理解客户的奥秘
  • Rockchip设备USB通信协议解析:rkdeveloptool的3种高效调试模式实战指南
  • 动态关节镜导航系统在ACL重建手术中的应用与实现
  • 从芯片上电到Wi-Fi连接:手把手调试ESP32-S3启动全流程(附日志分析)