【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 命令删除分⽀的⽅法是不⾏的。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐唐思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值