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 分支修复,不直接改动线上稳定代码
相关推荐
LuminousCPP2 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
web3.08889992 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
德思特2 小时前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
YOU OU2 小时前
Spring IoC&DI
java·数据库·spring
один but you3 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
是码龙不是码农3 小时前
ThreadPoolExecutor 7 个核心参数详解
java·线程池·threadpool
这是程序猿3 小时前
Spring Boot自动配置详解
java·大数据·前端
MY_TEUCK3 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
测试员周周4 小时前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest