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 修复分支。

相关推荐
摆烂且佛系1 天前
十分钟了解Git Cherry-Pick
git
星渊澈1 天前
从github上git clone 比较慢,如何解决。。
git·github
魔都吴所谓1 天前
【Ubuntu】离线环境下Git LFS(deb包)安装与验证完整教程
linux·git·ubuntu
REDcker1 天前
Git worktree:多工作区并行开发与实践
git·worktree
lifewange1 天前
Git版本管理
大数据·git·elasticsearch
尘世壹俗人1 天前
idea提交git版本由于中文文件名卡死不动
java·git·intellij-idea
oushaojun21 天前
git在项目中常用的操作集合
git
qq_396227951 天前
Git 分布式版本控制
分布式·git
无限进步_1 天前
【C++】反转字符串的进阶技巧:每隔k个字符反转k个
java·开发语言·c++·git·算法·github·visual studio
Rabbit_QL2 天前
【Git 报错处理】`remote origin already exists` 是什么意思?
git