Git - Git分支管理

目录

Git分支管理

Git 的默认分支就是 master。你所作的commit会在master分支上自动移动。 在多次提交操作之后,master分支指向最后那个commit object(提交对象链)。

分支创建

通过git branch来查看和创建分支。

创建标签记在HEAD指针所指向的提交点创建tag(就是当前所在分支)

  1. 查看当前分支

    git 复制代码
    git branch
  2. 分支创建

    git 复制代码
    git branch dev
  3. 分支切换

    git 复制代码
    git checkout dev
  4. 分支创建并切换同时完成

    git 复制代码
    git checkout -b dev2
  5. 分支最近切换

    git 复制代码
    git checkout -

多个分支共享版本跟踪

  1. 在dev2分支中创建一个文件z.txt,三个分支下都可以追踪到z.txt文件
  2. 在dev分支中,将z.txt文件添加,三个分支下都可以追踪到z.txt文件
  3. 在dev分支中,将z.txt文件提交,只有dev分支下有z.txt文件,其它两个分支下没有

分支合并

  1. 基于上面的例子,切换到master上做dev的合并,合并后,就会发现master分支下也出现了z.txt文件。

    git 复制代码
    git merge dev
  2. 文件进行修改

    • 切换到dev分支上,将z.txt文件进行修改
    • 切换回master分支,会提示z.txt文件进行了修改

分支删除

  1. 不能删除自己所在的分支
  2. 可以切换到master删除一个合并后的或者没有发生变化的分支
  3. 如果一个分支发生了变化,不能删除。
    如果要强制删除可以git branch -D dev2

分支的本质

master指向的是提交

HEAD是指向当前的分支,当前在哪个分支就指向哪个分支

第二张图上我们可以看到创建了dev的分支,当我们切换到dev分支的时候HEAD就会指向dev

当我们进入.git文件夹查看HEAD的内容的时候可以看到,所处分支不同内部的文件指向就不同。

  • master分支cat .git/HEAD
  • dev分支

    如果dev发生修改提交,dev的版本就会向后移动。

    在master分支上如果合并就会出现下面的图

分支的冲突

  1. 在dev中修改z.txt文件,并提交
  2. 切换回master中,修改z.txt文件,并提交
  3. 合并时,会发现冲突
git 复制代码
<<<<<<<<<<<HEAD是当前指向的分支所修改
>>>>>>>>>>dev是dev分支修改
  1. 我们需要手工合并。

  2. 可以通过图形来查看冲突的提交日志。

    git 复制代码
    git log --graph

分支管理策略

git 的分支整体预览图如下:

从上图可以看到主要包含下面几个分支:

master:git默认主分支(这里不作操作)。

stable:稳定分支,替代master,主要用来版本发布。

develop:日常开发分支,该分支正常保存了开发的最新代码。

feature:具体的功能开发分支,只与 develop 分支交互。

release:release 分支可以认为是 stable分支的未测试版。比如说某一期的功能全部开发完成,那么就将 develop 分支合并到 release分支,测试没有问题并且到了发布日期就合并到 stable分支,进行发布。

bugfix:线上 bug 修复分支。

相关推荐
John_ToDebug3 小时前
Git Stash 完全指南:临时保存工作区的艺术
人工智能·git·agent
是宇写的啊15 小时前
Git远程操作
git
our_times1 天前
# Git 高频命令实战指南:从日常开发到进阶协作
git
PBitW1 天前
git 中容易遗忘的点 (二) ⚡⚡⚡
前端·git·面试
PBitW1 天前
git 中容易遗忘的点 (三) 🚀🚀🚀
前端·git·面试
郑州光合科技余经理1 天前
家政预约小程序后端源码深度剖析:支付回调实战
java·开发语言·前端·git·小程序·架构·php
北极糊的狐1 天前
钉钉小程序 Git 版本管理完整流程
git·小程序·钉钉
Fzuim2 天前
当 AI 也成为提交者:ThinkFlow 的 Git 提交规范,是怎么定的
git·agent·thinkflow
CodexDave2 天前
数据库连接池耗尽:排查顺序与三层兜底
服务器·前端·数据库·git·云原生·容器·kubernetes
乐观的Terry2 天前
5、发布系统-Git 集成
大数据·git·elasticsearch