Git原理与使用(二):分支管理

这篇具有很好参考价值的文章主要介绍了Git原理与使用(二):分支管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


分支管理是Git的杀手锏之一
威力无比强大
下面就让我们一起开始分支管理的探索之旅吧

一.分支的基本操作

1.理解分支

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
注意:

HEAD指向的是当前分支!!!

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
这就是master分支移动的大致草图

2.创建分支

既然分支这么强大,
那么我们如何创建分支呢?

git branch 查看当前本地的所有分支
git branch 分支名   创建分支

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
默认情况下,我们只有master这一个分支
然后我们又创建了一个分支:dev
此时我们就有两个分支了

但是这个master分支前面为什么有一个*呢?
因为我们当前所在的分支是master分支
也就是HEAD目前正在指向的分支

那么怎么切换分支呢?

3.切换分支

git checkout 分支名

熟悉不熟悉,git checkout – 文件名
撤销操作,回退工作区中的文件内容
此时它没有加--,就变成了切换分支的命令
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
创建分支就像是这样:
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
其实切换分支就是把HEAD指针改一下指向即可
因此切换分支就像是这样:
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
下面我们在dev分支上面修改test.txt这个文件(分身学习java)
然后看看会不会对master分支造成任何影响?
(在互相独立的平行空间当中,分身去学习java会不会让正在专心致志学习C++的我们感到疲惫?)
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
在dev分支上面修改了test.txt并进行了add和commit之后
我们回到master分支下看看test.txt有没有更新
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后我们发现对master分支并没有影响
(分身学java不会让我们感到疲惫,正和我们的需求)
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
dev分支上依然存在,分身会有java的知识
那么它是怎么做到的呢?
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
也就是这样:
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

4.删除分支

首先要说明的是:
1.如果我们当前正处于某分支下,就不能删除该分支 只有当我们处于其他分支下的时候才可以删除该分支
2.因为master分支相当重要,所以谨慎期间我们一定不能删除master分支

git branch -d dev  删除dev分支

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
此时我处在dev分支下,因此无法删除dev分支
下面我切换到master分支再去删除dev分支
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
它提示我们:
当前分支还没有进行合并,无法删除
(关于分支合并的问题,我们接下来就会介绍)
如果你确定就是要删除这个分支
使用:

git branch -D dev

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后我们强制删除,此时删除成功

5.补充:创建并切换分支

先创建分支,然后再去切换到该分支
操作略显冗余
那么可不可以创建并切换分支呢?
当然可以:

git checkout -b dev

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

二.合并分支

1.合并分支的基础操作

一般情况下
因为master分支相当重要,所以我们建议在dev分支上进行工作
最后只需要将dev分支上的内容合并到master分支当中即可

下面我们就在dev分支下修改一下test3.txt
并且add commit
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

git merge 分支名

将某个分支中的内容合并到当前分支下
因此,我们需要先切换到master分支下,然后在master分支上面合并dev分支
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
合并成功,test3.txt的新版本也进入了master分支中的暂存区和版本库了

其中这个Fast-forward代表"快进模式"
也就是直接把master指向dev的当前提交,所以合并速度非常快
当然,不是每次合并都能够Fast-forward,我们后面会介绍其他方式的合并
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
这就是合并的过程:
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

2.分支冲突

但是在实际的分支合并的时候不是我们想合并就能合并成功的,有时候可能会遇到代码冲突的问题.
下面我们在dev分支下把test.txt的第二行给它修改一下
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后在dev分支下 add commit
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后我们切换到master分支下
一开始时master分支下的test.txt肯定是没有dev分支下添加的那一行的(这点我们现在也完全能够理解)
因此master分支下的那个人就继续往下写代码了
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
写完之后add commit

此时,master和dev分支都有了各自的新的提交,也就是变成了这样:
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
此时合并的话就可能会有冲突

然后我们切换到dev分支下合并master分支
因为master分支是主分支,相当重要,而dev分支则没有那么重要
因此我们不会让master分支出现任何"危险",要时刻保护master分支的安全

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
下面我们vim test.txt
看一下变成了什么样子
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
此时我们必须要手动调整冲突代码,并需要再次提交修正后的结果
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
最后我们修改成了这个样子,这个样子其实就是master分支修改后的内容
此时冲突就被解决了
然后我们还要add commit一下
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后git merge master就成功了
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
此时冲突解决完成
状态就变成了
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

三.分支管理策略

1.Fast-forward模式

通常合并分支时,如果可能的话,Git会采用Fast-forward模式
而在Fast-forward模式下我们是看不出该次提交时merge进来的还是正常提交的

在这里我们介绍一个命令

git log --graph --pretty=oneline --abbrev-commit

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
这个命令可以从分支历史上看出分支信息
也就是能够看出到底是merge进来的还是正常提交的

在合并冲突时进行合并的模式就不是Fast-forward了
因为Fast-forward模式是直接改变分支的指向的
而我们解决合并冲突时又进行了一次新的提交
最后在dev分支下进行merge合并时才让master分支指向那次新的提交

2.–no–ff(即:禁用Fast-forward模式)

Git支持我们强制禁用Fast-forward模式,
那么就会在merge时生成一个新的commit,这样我们就能从分支历史上看出分支信息了

git merge --no-ff -m "提交信息" 要合并的分支名称

下面我们来演示一下
我们切换到dev分支下往test.txt文件中再去新增一行内容
然后 add commit
然后切换到master分支下去合并dev分支
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
大家只需要知道:
1.禁用Fast-forward模式后合并时会创建一个新的commit id
所以要加上-m参数

2.在合并分支时加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
但是Fast-forward就看不出曾经做过合并

3.分支策略

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

四.创建临时分支修复bug

在Git中,每一个bug都可以通过创建一个新的临时分支来修复.
修复后,合并分支,再把临时分支删除

1.git stash存储工作区内容

假如我们现在正在dev分支上进行开发,
开发到一半了,突然发现master分支上面有bug,需要解决
可是我现在dev分支上的代码在工作区写了一半了,还无法提交,怎么办呢?

例如:
我现在在test1.txt上面写了一些代码
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
Git提供了一个命令,可以将当前工作区的信息进行储藏,被储藏的内容可以在将来的某一个时间点恢复出来

git stash

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
目前我们的工作区就变成干净的了(除非我们工作区目前的文件还有没被Git管理的文件),因此我们就可以放心的创建分支来修复bug了

2.修复bug

因为bug出现在master分支上
所以我们要基于master分支创建临时分支来修复bug
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后在这个临时分支fix_bug上修复bug
假设test1.txt的第一行就是bug,这一行要改成写hello这五个字符
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后add commit 之后就修复完成了
然后切换到master分支完成合并
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

3.删除临时分支

合并完成之后,master分支上的bug就被修复成功了
然后我们就可以删除fix_bug分支了
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

3.恢复工作区内容

至此,bug的修复工作做完了,我们还要继续回到dev分支进行开发

git stash list
查看存储的内容

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

git stash pop
恢复工作区的内容,恢复的同时也会把stash的内容删除掉

也可以使用这个命令
git stash apply
恢复工作区的内容,恢复的同时并不会把stash的内容删除掉
需要使用git stash drop来删除

我们也可以使用git stash apply stash@{0}来恢复指定的stash内容

我们在这里就使用git stash pop这个命令了
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
但是此时我们修复bug后的内容并没有在dev分支上面显示
因此我们就要
1.在dev中合并master分支
2.在master分支下合并dev分支

这样做的好处是:
第一步就算合并时出现了问题也可以在本地的dev分支下多次修改测试,不会影响master分支的代码

第二步时由于冲突在dev分支中就被解决了,那么此次合并基本就不会出现冲突问题了

4.合并冲突

我们开始第一步:
因为我们工作区的代码还没有add 和commit
所以要先add commit
然后merge
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后我们开始解决冲突
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
然后add commit
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
第一步完成
开始第二步:
切换到mater合并dev分支
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、
至此bug问题成功解决

五.分支管理的小结

Git原理与使用(二):分支管理,Linux学习之路,Git,git,分支管理、

以上就是Git原理与使用(二):分支管理的全部内容,希望对大家有所帮助!文章来源地址https://www.toymoban.com/news/detail-773878.html

到了这里,关于Git原理与使用(二):分支管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git学习笔记 | 版本管理 - 分支管理

    学习文章1 学习文章2 学习文章3 Git是开源分布式版本控制系统,版本控制是一种记录文件内容变化,查阅特定版本修订情况的系统。 说法1 说法2 虽然有两种说法,但大概意思是相同的,前三个区域都在本地,只有远程仓库不在本地。 本地仓库 = 工作区 + 版本区 工作区:本地

    2024年02月10日
    浏览(37)
  • git 工具使用--分支管理

    分支管理是Git的杀手级功能之一。分支:就是科幻中的平行宇宙,当你正在电脑面前学习C++的时候,另一个你正在另外一个平行宇宙里面学习Java。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平时宇宙合并了,结果,你既学习了C++,也学

    2024年02月16日
    浏览(37)
  • Linux的学习之路:7、yum与git

    本章主要是说一下yum和git的操作 目录 摘要 一、什么是yum 二、yum三板斧 1、list 2、install 3、remove 三、怎么创建仓库 四、git三板斧 1、add 2、commit 3、push 4、pull 五、思维导图  YUM是Yellowdog Updater Modified的简称,是杜克大学为了提高RPM软件包安装性而开发的一种软件包管理器。它

    2024年04月14日
    浏览(17)
  • Git分支管理:理解主干与分支的概念及使用方法

    Git 的主干是指代码库中的主要分支,通常称为 master 分支。在 master 分支上,您可以看到项目的最新版本,这是所有其他分支的基础。当您在 master 分支上进行更改时,这些更改将影响到所有其他分支。 分支是指从主干分支(或其他分支)分离出来的一个独立的代码版本。分

    2024年02月15日
    浏览(27)
  • git的分支的使用,创建分支,合并分支,删除分支,合并冲突,分支管理策略,bug分支,强制删除分支

    查看当前本地仓库中有哪些分支 HEAD所指向的分支就是当前正在工作的分支 创建一个分支 创建好了,但是目前还是指向 master 用tree命令也可以看到已经创建分支成功了 创建出来的分支,和主分支的最新记录是一样的 切换分支就是让HEAD指向我们的dev分支 我们在dev分支上堆R

    2024年02月04日
    浏览(40)
  • 使用ssh连接github——git学习之路(二)

    ssh全称为Secure Shell, 意味安全的外壳,旨在为不安全的网络提供共安全的通信。 参考自碎步の流年的博客 使用ssh连接github,能够增强安全性和便捷性。因为可以启用ssh代理,这样就不用每次push都要输入密码。 首先,要保证本机安装了ssh工具,一般windows会自带openssh,没有的

    2024年02月14日
    浏览(48)
  • 从私有Git仓库的搭建到命令的使用及部署再到分支管理

    1. 版本控制系统: git   分布式  —没有中心代码库,所有机器之间的地位同等(每台机器上都有相同的代码) svn  集中管理的 —有中心代码库,其他都是客户端 2.git与svn介绍 1.git属于 分布式版本控制系统 2.svn属于 集中式的版本控制系统 面试题:Git和SVN的区别? 3.git 相关

    2024年01月21日
    浏览(33)
  • git分支-分支管理

    现在已经创建、合并和删除了一些分支,让我们来看看一些分支管理工具,在开始经常使用分支时会很有用。 git branch命令不仅仅用于创建和删除分支。如果不带参数运行它,会得到当前分支的简单列表。 $ git branch   iss53 * master   Testing 这个*字符是前缀,表示当前检出的分

    2024年04月10日
    浏览(76)
  • 【Git企业开发】第四节.Git的分支管理策略和bug分支

    文章目录 前言 一、Git的分支管理策略       1.1 Fast forward 模式和--no-ff 模式       1.2 企业分支管理策略 二、bug分支 三、删除临时分支 四、总结 总结 通常合并分支时,如果可能,Git 会采用 Fast forward 模式。还记得如果我们采用 Fast forward 模式之后,形成的合并结果是什么

    2024年02月06日
    浏览(35)
  • 【Git】分支管理--创建新分支、删除分支、恢复分支

       1、查看所有分支 2、切换到将要复制的现有分支   sourceBranch 为接下来要复制到新分支的现有分支名。创建的新分支依赖当前所在分支,且新分支一旦创建不能更改依赖,所以要提前切换到希望复制的分支 3、创建新分支   newBranch 为新分支名 4、push内容到新分支  

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包