【Git分支管理】理解分支 | 创建分支 | 切换分支 | 合并分支 | 删除分支 | 强制删除分支

目录

前言

0.理解分支

1.查看本地仓库存在的分支

2.HEAD指向分支

3.创建本地分支

4.切换分支

5.分支提交操作

6.合并分支

快进模式Fast-forward

7.删除分支

8.强制删除分支


本篇开始介绍下Git提供的杀手级的功能:分支管理

  • 先提交再合并

前言

在玄幻武侠村中,武林大会:赢的人可以迎娶村长的女儿。武林大会有三个月的准备时间。

基本时间线:参赛者——>练习基本功——>学习降龙十八掌——>参加比赛

此时为了赢得武林大会的几率更大,你创建了一个分身,在同时一时间线上(3个月)

参赛者——>练习基本功——>学习降龙十八掌——>参加比赛

                                     分身👇👉辟邪剑法👉👆合体

0.理解分支

根据上面例子,其实Git的提交时间线也是可以做到分支和合体的动作的。

回顾:

  • master里面存储是最新一次提交记录的commit id
  • commit id对应的是版本库中对象库中的对象的索引
  • tree后面也是一个对象指向☞每个文件的提交的详情的commit id☞每个问价详细修改内容
  • parent指向上一次提交的commit id
  • git log
  • git log --pretty=oneline
  • git status
  • git cat-file -p  跟commit id //查看maseter索引commit id的内容
  • git add 提交文件名
  • git commit -m "详细描述" 文件名
  • 对此可以画出一个提交时间线(主线),master里面存储就是最新一次提交记录的commit id
  • 提交时间线:master主分支

1.查看本地仓库存在的分支

git branch 命令展示出来当前本地仓库有哪些本地分支。

当在创建本地仓库的时候,Git会为自动创建一个本地分支:master主分支

2.HEAD指向分支

* master前面的 * 表示什么意思呢❓ 

*出现在master前面,是表示HEAD指向master分支且master主分支是当前正在工作分支。

  • HEAD指针指向master主分支。

  • HEAD指针不止可以指向master主分支,可以指向其他任意分支。

  • 被HEAD指向的分支,就是当前正在工作的分支。(之前HEAD指向master主分支,所以add/commit 操作提交 影响的都是master主分支)

3.创建本地分支

git branch 创建分支的名称 

  • HEAD还是指向master(*master 当前正在工作的分支)
  • 分支都存放在refs/heads/路径下,此刻次路径下有两个本地分支(dev /master)
  • 查看dev和master里面内容,发现无论是master还是dev里面的内容都是最新一次提交的commit id且master和dev里面的内容一摸一样的(dev的初始内容)
  • 所以:dev分支是基于master主分支最新一次提交记录 创建的

4.切换分支

 git checkout dev(需要切换分支的名称)

  • 让HEAD指向dev分支,让dev成为当前工作分支(*dev),才能在dev分支上操作

5.分支提交操作

前提:还未在dev分支上提交,ReadMe文件是只有一份,创建不同分支,对其进行修改操作,相互分支切换都是看的到的文件的改变。(只是在工作区发生改变)

还未提交【dev&master分支】 

前提:分支还未合并,在某分支上去add / commit 提交之后,只能在提交的分支才能看到,其他分支看不到改变。

  • dev分支指向最新一次的提交记录
  • 它的parent指向上次提交记录,也就是是指向master的最新一次提交。
  • 无论是dev分支还是master分支都存储的是各自提交线的最新一次提交的commit id 且他们是在不同提交时间线的
  • dev是记录master提交时间线创建的,所以有之前master分支提交时间线

提交之后【dev分支】 

提交之后【master分支】 

6.合并分支

处于A分支上:git merge B(需要合并的分支名称)

前提:分支和分支合并之后,就是都是指向最新一次提交,都可以看到修改的内容。 

  • 想要在master分支上看到新增的代码。将master和dev分支上的内容进行合并操作。

  • 如果我们想要master分支合并我们的dev分支,我们必须先切换到master分支上,然后合并dev分支。

  • 如果我们想要dev分支合并我们的master分支,我们必须先切换到dev分支上,然后合并master分支。

  • 综上,如果我们想要B上的内容出现在A上,必须先切换到A上,把B的内容合并到A上。

  • ❓Fast-forward表示快进模式是什么☞后面分支模式讲

快进模式Fast-forward

Fast-forward快进模式:意味着直接把 master的内容 改变为 dev当前最新的一次提交内容

(合并非常快是因为直接改变master里面的内容commit id即可)当然不是每次都是faster - forward快速模式还有其他模式。

7.删除分支

前提:删除A分支的时候,一定处于其他分支(B),才能删除A分支

git branch -d 删除分支名称  (-d delete)

  •  dev分支的使命:就是修改ReadMe文件,新增一行代码。
  • 最后将dev分支上面的内容合并到了master分支上,dev分支此刻的任务也就完成了。
  • 因为创建、合并和删除分⽀⾮常快,所以Git⿎励你使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全。
  • git branch -d 是merge之后,git才支持我们删除的分支
  • 在分支没有merge且进行开发和提交了,这个时候删除,git是不允许你删除的。(git认为对我们有用,所以他要保护分支,不支持删除)

【处于dev分支上】

【处于master分支上】

8.强制删除分支

前提:删除A分支的时候,一定处于其他分支(B),才能删除A分支

git branch -D 删除分支名称  (-D Delete)

  • 软件开发中,总有⽆穷⽆尽的新的功能要不断添加进来。
  • 添加⼀个新功能时,你肯定不希望因为⼀些实验性质的代码,把主分⽀搞乱了,所以,每添加⼀个新功能,最好新建⼀个分⽀,我们可以将其称之为 feature 分⽀,在上⾯开发,完成后,合并,最后,删除该 feature 分⽀。
  • 可是,如果我们今天正在某个 feature 分⽀上开发了⼀半,被产品经理突然叫停,说是要停⽌新功能的开发。虽然⽩⼲了,但是这个 feature 分⽀还是必须就地销毁,留着⽆⽤了。这时使⽤传统的 git branch -d 命令删除分⽀的⽅法是不⾏的。

相关推荐

  1. [git] 远程删除分支

    2024-07-16 15:02:05       51 阅读
  2. Git删除远程分支

    2024-07-16 15:02:05       50 阅读
  3. git删除分支

    2024-07-16 15:02:05       30 阅读
  4. git分支删除

    2024-07-16 15:02:05       32 阅读
  5. git删除分支

    2024-07-16 15:02:05       26 阅读
  6. git分支-分支管理

    2024-07-16 15:02:05       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 15:02:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 15:02:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 15:02:05       58 阅读
  4. Python语言-面向对象

    2024-07-16 15:02:05       69 阅读

热门阅读

  1. Python编程实例-使用urllib3进行HTTP请求详解

    2024-07-16 15:02:05       19 阅读
  2. [ptrade交易实战] 第十四篇 公共交易函数 (2)

    2024-07-16 15:02:05       29 阅读
  3. 数据库系统概论:初识数据库

    2024-07-16 15:02:05       21 阅读
  4. Sqlmap中文使用手册 - Optimization模块参数使用

    2024-07-16 15:02:05       26 阅读
  5. 智能招聘系统的AI功能解析

    2024-07-16 15:02:05       23 阅读
  6. 若依分离版 后端自定义分页

    2024-07-16 15:02:05       22 阅读
  7. Elasticsearch索引映射定义

    2024-07-16 15:02:05       19 阅读
  8. 树莓派使用蓝牙设置wifi网络

    2024-07-16 15:02:05       18 阅读