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 小时前
Java AI智能体开发实战:从零构建智能对话系统指南
java·开发语言·人工智能
折哥的程序人生 · 物流技术专研5 小时前
第8篇:六大设计原则在工厂模式中的体现
java·设计模式·设计原则·工厂模式·编程进阶·扩充系列
小明bishe186 小时前
计算机毕业设计之基于JAVA的植物科普网站
java·spring boot·spring·架构·课程设计
Drone_xjw6 小时前
从 GDB 到 CDB:C/C++ 程序调试的两把“手术刀”
c语言·开发语言·c++
r_oo_ki_e_6 小时前
Java Map 集合学习笔记
java·笔记·学习
SL-staff6 小时前
智慧园区2000+设备统一管理:JVS-IoT如何降低运维成本40%
java·开发语言·物联网·智慧园区·设备管理·运维优化·jvs-iot
咖啡八杯7 小时前
GoF设计模式——模板方法模式
java·后端·spring·设计模式
爱笑的源码基地7 小时前
一款全开源的信创云PACS影像云平台解决方案,支持多模态医学影像处理(CT/MR/DR/超声/病理等)
java·源码·国产化·pacs·云影像·区域pacs
我命由我123458 小时前
Android 开发问题:ClickableSpan 的点击事件没有生效
java·java-ee·android studio·android jetpack·android-studio·android runtime
2zcode8 小时前
基于MATLAB图像处理的饮料瓶灌装液位检测系统设计与实现
开发语言·图像处理·matlab