Git教程:Git分支管理
分支工作的工作流程
这是从Git官网截取的一个片段
让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤:
- 开发某个网站。
- 为实现某个新的用户需求,创建一个分支。
- 在这个分支上开展工作。
- 正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:
- 切换到你的线上分支(production branch)。
- 为这个紧急任务新建一个分支,并在其中修复它。
- 在测试通过之后,切换回线上分支,然后合并这个修补分支,最后将改动推送到线上分支。
- 切换回你最初工作的分支上,继续工作。
Git分支管理
几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。 使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作
我们上一章的所有操作一直是在master分支上,版本切换能够让我们明显的认识到master分支是一个类似时间线的分支。 在实际的开发工作中不会直接在项目主分支上进行开发,一般都是新建一个或过多个开发分支,所有的开发都集中到开发分支上,当开发分支开发完成并通过测试就合并到主分支,以一个新的版本发布。
分支的好处
- 同同时并行推进多个功能的开发,提高工作效率
- 各个分支在开发过程中不影响,一个分支开发失败不会影响到其他分支,失败的分支直接删除重新开发就可以
Git 的 master 分支并不是一个特殊分支。 它就跟其它分支完全没有区别。 之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建它,并且大多数人都懒得去改动它。
前期准备
在一个空文件里面建立一个fish.txt
文本文件,里面写一些内容,初始化本地仓库,提交到仓库 回顾一下命令的适用
git init
git add .
git commint -m'xxx'
准备结果
查看分支
查看已有的分支和当前所在的分支
git branch
# 或者
git branch -v
git branch
命令会列出所有分支,当前分支前面会标一个*
号
分支创建
Git 是怎么创建新分支的呢? 很简单,它只是为你创建了一个可以移动的新的指针。 比如,创建一个 testing 分支, 你需要使用 git branch < name >
命令
git branch testing
# 此时创建一个名为testing的分支
git branch 命令仅仅 创建 一个新分支,并不会自动切换到新分支中去 此时两个指针(master
,testing
)指向相同的历史分支,这两个指针各自指向自己所在的分支 同时还有一个HEAD
的指针,用来指明当前所在的分支,此时HEAD
指向master就代表当前在master
分支 使用git branch
查看一下,*
在哪里就代表当前在那个分支
分支转换
要切换到一个已存在的分支,你需要使用 git checkout
命令。 我们现在切换到新创建的 testing 分支去:
git checkout testing
另外因为git checkout
既可以恢复工作树文件(撤销操作),又可以切换分支,这样可能会有一些歧义的出现,所以新版本建议适用git switch
git switch testing
通过括号里面的内容也可以进行判断
在新分支中添加记录
在新的分支中,在新文件家中添加内容‘testing’,并提交到仓库 此时会建立仓库中会出现一个新的记录,效果入下图
切换回master
分支
此时HEAD指针指向了master
,此时在查看fish.txt
文件中的内容,就会发现内容已经恢复到原来未修改的状态
分支合并
我们现在分两种选择,
- 一、直接将testing分支上的内容合并到master分支,这样不会发生版本冲突的问题
- 二、在master分支上继续进行修改,然后再选择合并分支,这样会发生版本冲突的问题
我们先进行第一种直接合并分支
git merge testing # 把指定分支合并到当前分支
此时再查看fish.txt
文件中的内容,就会发现原本再testing分支中修改的文件内容出现到了master
分支中 这种master
分支没有内容改变的合并不会出现冲突的问题。
第二种就是master分支和testing分支都进行了修改,此时在选择合并就会发生冲突 首先需要在在两个分支上分别修改并提交到版本库
- 在testing分支下向文件中添加
testing2222
- 在master分支下向文件中添加
master2222
命令的全过程
git switch testing # 切换到testing分支
vim fish.txt # 使用vim编译器修改文件内容
git add . # 添加到暂存区
git commit -m'test2commit' # 提交到版本库
git switch master # 切换到master分支
vim fish.txt # 使用vim修改文件内容
git add . # 提交到暂存区
git commit -m'mastercommit' # 提交到版本库
此时合并分支
冲突(内容):合并fish.txt中的冲突 自动合并失败;修复冲突,然后提交结果
使用 git status
也可以查看此时发生冲突的文件
为什么会发生冲突
其实就是在两个分支中同时修改了同一个文件的内容,在合并时,Git不能够知道你需要那个文件里面的内容,所以就将两个文件修改的内容全部保存下来,然后让你根据自己的需要进行内容的修改,这个也是后面解决代码冲突的基本思路
代码合并冲突解决
发生冲突后,我们先看一下发生冲突的文件内容 此时会发现文件中有部分数据分别是两个分支中各自添加的内容,使用<<<<<<<
,=======
,>>>>>>>
区分开来并且还提示那些内容是属于那一个分支的 然后我们修改文件的内容,根据实际需求选择需要的内容, 解决冲突以后,再进行一次提交
git add .
git commit -'conflict fixed'
至此冲突就已经解决 如果你想了解这段时间内发生的内容,可以查看具体的日志信息git log
分支合并图
使用该指令git log --graph
可以看到分支记录以及图
删除分支
合并代码以后就可以这个删除开发分支
git branch -d testing
总结
本章我们学习了Git分支,了解到了分支的优势和Git分支的工作流程,如何创建分支、切换分支、合并分支、解决冲突。希望大家能够认识到分支开发的优势,掌握分支开的常用命令
本章常用命令及其拓展
命令 | 作用 |
---|---|
git branch | 查看分支 |
git branch -v | 查看分支 |
git branch < name > | 创建分支 |
git checkout < name > | 切换分支 |
git switch < name > | 切换分支 |
git checkout -b < name > | 创建并切换分支 |
git switch -c < name > | 创建并切换分支 |
git merge < name > | 合并某分支到当前分支 |
git branch -d < name > | 删除分支 |
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanejgk
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01