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 分支修复,不直接改动线上稳定代码
相关推荐
二月夜7 小时前
剖析Java正则表达式回溯问题
java·正则表达式
xuhaoyu_cpp_java8 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
想吃火锅10058 小时前
【leetcode】405.数字转换为十六进制数js
开发语言·javascript·ecmascript
程序员二叉8 小时前
【Java】集合面试全套精讲|HashMap/ArrayList高频考点完整版
java·面试·哈希算法
专注VB编程开发20年8 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
cfm_29148 小时前
JVM GC垃圾回收初步了解
java·开发语言·jvm
心之伊始8 小时前
LangChain4j RAG 实战:Java 后端如何把本地文档接入 Embedding 检索链路
java·架构·源码分析·csdn
~小先生~8 小时前
Python从入门到放弃(一)
开发语言·python
m0_579146659 小时前
已被 Git 追踪的本地修改文件如何实现临时忽略
git
许彰午9 小时前
17_synchronized关键字深度解析
java·开发语言