Git学习3之Git分支操作

分支概念

  • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
    • 比如,正在开发主线任务时,收到一个新通知,要去做一个小功能,而别人正在开发主线功能,此时,就可以从下图879efe处开辟一个小分支,最后还可以把做的内容合并起来。
  • 几乎所有的版本控制系统,都以某种形式支持分支。
    • 使用的时候,默认它有一个主分支,master 代表主分支

在这里插入图片描述

每一次提交的时候,都会生成一个新的版本,并且 HEAD 指针会指向新的版本,
在这里插入图片描述
在这里插入图片描述
再提交一次的话,HEAD会指向新的任务
在这里插入图片描述
三个提交,形成一条横线,这个横线称为主分支,可以理解为树干(默认存在)。后续可以在主分支上发叉(分支),
在这里插入图片描述
分支:在原来的任务上,开辟新的任务,来做新的任务,最后还可以把任务合并起来
在这里插入图片描述

创建分支

  • 命令
    • git branch 分支名称
      在这里插入图片描述
      此时,虽然创建了工作区(红框),但 HEAD 指向的工作区仍然在主分支(master)上,
      在这里插入图片描述
      在这里插入图片描述
      查看有没有创建好这个主分支,进入下一部分

查看分支

  • 查看有没有创建好这个主分支
    • git branch 会列出当前有哪些分支,以及当前正在使用的分支是哪一个(当前使用的用*标记,下图所示,绿色)
    • 绿色为当前所在分支默认有一个 master 主分支

在这里插入图片描述

切换分支

  • 我不想在当前分支了,想切换到另一个分支去操作
    • git checkout 分支名称( tab 可以补齐)
      在这里插入图片描述
      新的分支,相当于把原来的代码,copy一份,放在了新的分支中,代码是一样的,然后通过分支切换,使得HEAD指向新的分支。当前工作区是新创建的分支
      在这里插入图片描述
      由于分支newBranch是从主分支复制过来的,所以其日志信息与主分支日志信息完全一样。
      在这里插入图片描述

操作

newBranch分支由主分支切换而来,所以其内容和主分支是一样的
在这里插入图片描述
在newBranch分支中创建 b.txt 文件
在这里插入图片描述
查看一下状态
在这里插入图片描述
将 a.txt 添加到缓存区
在这里插入图片描述
然后做一个提交,提交到本地仓库
在这里插入图片描述
再做 git log 的时候,发现有三条记录了,其中b.txt是在新分支上做的操作,并提交,则HEAD将指向新的分支版本
在这里插入图片描述
主分支上没有 b.txt,还停留在 '70bac4a37f’的版本
在这里插入图片描述
在这里插入图片描述
我们切回主分支,发现确实没有 b.txt
在这里插入图片描述

在这里插入图片描述
主分支中只有两个记录
在这里插入图片描述
继续在主分支 master 上做操作,生成新的版本
在这里插入图片描述
在这里插入图片描述
切换到分支 newBranch,是看不到主分支中添加的 c.txt 的
在这里插入图片描述
在这里插入图片描述

合并分支

将两条线做的合并为一条线,合并之前,一定要弄清楚,是谁合并谁,看当前HEAD指向谁,谁就是当前分支,把另一个分支合并到当前分支上来。

例:将newBranch 分支合并到主分支上,下图为当前状态
在这里插入图片描述
先将当前分支由newBranch切换到master主分支
在这里插入图片描述
合并分支,使用merge命令,合并后,主分支master上多了一个b.txt,来自newBranch分支,已经合并到了master
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
合并之后,newBranch 分支还存在

删除分支

如果想把 newBranch 分支删除,git branch -d 分支名称
在这里插入图片描述
上图中,按q即可重新输入
删除分支之前,我们先看一下分支(合并分支,并不会删除以前的分支,除非手动删除分支)
在这里插入图片描述
在这里插入图片描述

需求 git分支演练紧急修复bug

需求就是把分支应用一下,在主分支上有一个工程,在工程当中做登录功能的时候,突然发现之前的版本有bug,此时,应该回到以前的那个版本,去修改那个bug,修改完bug之后,还要提交到主线上面去,

  • 在主分支上创建一个工程,在工程当中添加登录.html(登录功能)

  • 创建一个分支,回退到上一个版本,提交合并
    在这里插入图片描述
    上图是已发布版本,突然告诉你版本 1a275e62f 有 bug,而此时版本 716b3d1d 已经开发了一半。此时我们要回到以前的版本 1a275e62f ,并开一个分支,去做这件事情,
    在这里插入图片描述
    在这里插入图片描述

切换分支后,其实应该是下图效果,相当于把主分支的内容,搞了一份放到子分支里面,
在这里插入图片描述

在这里插入图片描述

把 HEAD 指向子分支,
在这里插入图片描述

在这里插入图片描述
然后回退到上一个版本 git reset
在这里插入图片描述
在这里插入图片描述
查看一下该版本的内容,有 a.txt 和 c.txt 两个文件,没有 b.txt
在这里插入图片描述
在 a.txt 中添加一些内容,a.txt是空的内容
在这里插入图片描述
通过 cat 命令查看a.txt的内容,发现为空(啥也没有输出)
在这里插入图片描述
回车后,按 i 键 进行编辑
在这里插入图片描述

输入hellow world,然后底部通过 wq功能,回车进行保存
想要把输入的内容保存:先按esc键,接着按shift+冒号,看下图的变化

在这里插入图片描述
回车后即可实现保存,并再次通过 cat 命令查看此时内容
在这里插入图片描述
假设此时已经修复了bug
在这里插入图片描述
还是红色,需要添加到缓存区,然后提交到本地仓库
在这里插入图片描述
在这里插入图片描述
此时达到目的:在紧急分支 hotBranch 中把 1a275e62f 存在的问题修复完毕,并生成了一个新的版本 51caa1252
在这里插入图片描述
然后把 hotBranch 分支内容合并到主分支上去,首先切换到主分支master上
在这里插入图片描述

在这里插入图片描述
把 hotBranch 合并到 主分支 master 上,可以看出,在 a.txt 上加了一项信息
在这里插入图片描述
合并之后,主分支 master 中,a.txt、b.txt和c.txt都存在
在这里插入图片描述
查看 a.txt 的内容
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值