本文已参加「新人创造礼」活动,一起敞开创造之路

  • ❤️ 作者简介:大家好我是小鱼干儿♛是一个酷爱编程、酷爱算法的大三学生,蓝桥杯国赛二等奖获得者
  • 个人主页 :小鱼干儿♛

分支作业的作业流程

这是从Git官网截取的一个片段

让咱们来看一个简单的分支新建与分支兼并的例子,实践作业中你可能会用到相似的作业流。 你将阅历如下步骤:

  1. 开发某个网站。
  2. 为实现某个新的用户需求,创立一个分支。
  3. 在这个分支上开展作业。
  4. 正在此刻,你突然接到一个电话说有个很严重的问题需求紧迫修补。 你将依照如下方式来处理:
  5. 切换到你的线上分支(production branch)。
  6. 为这个紧迫任务新建一个分支,并在其间修正它。
  7. 在测验经过之后,切换回线上分支,然后兼并这个修补分支,最终将改动推送到线上分支。
  8. 切换回你最初作业的分支上,继续作业。

Git分支管理

简直每一种版别控制系统都以某种形式支撑分支,一个分支代表一条独立的开发线。 运用分支意味着你能够从开发主线上分离开来,然后在不影响主线的一起继续作业

咱们上一章的一切操作一直是在master分支上,版别切换能够让咱们显着的认识到master分支是一个相似时间线的分支。 在实践的开发作业中不会直接在项目主分支上进行开发,一般都是新建一个或过多个开发分支,一切的开发都会集到开发分支上,当开发分支开发完结并经过测验就兼并到主分支,以一个新的版别发布。

Git教程 从入门到实战----Git分支管理

分支的好处

  • 同一起并行推进多个功能的开发,进步作业效率
  • 各个分支在开发过程中不影响,一个分支开发失利不会影响到其他分支,失利的分支直接删去重新开发就能够

Git 的 master 分支并不是一个特殊分支。 它就跟其它分支彻底没有区别。 之所以简直每一个库房都有 master 分支,是因为 git init 指令默许创立它,而且大多数人都懒得去改动它。

前期预备

在一个空文件里边树立一个fish.txt文本文件,里边写一些内容,初始化本地库房,提交到库房 回顾一下指令的适用

git init
git add .
git commint -m'xxx'

预备成果

Git教程 从入门到实战----Git分支管理

检查分支

检查已有的分支和当时地点的分支

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教程 从入门到实战----Git分支管理
运用git branch检查一下,*在哪里就代表当时在那个分支
Git教程 从入门到实战----Git分支管理

分支转化

要切换到一个已存在的分支,你需求运用 git checkout 指令。 咱们现在切换到新创立的 testing 分支去:

git checkout testing

另外因为git checkout既能够恢复作业树文件(撤销操作),又能够切换分支,这样可能会有一些歧义的呈现,所以新版别主张适用git switch

git switch testing

经过括号里边的内容也能够进行判别

Git教程 从入门到实战----Git分支管理

在新分支中增加记载

在新的分支中,在新文件家中增加内容‘testing’,并提交到库房 此刻会树立库房中会呈现一个新的记载,效果入下图

Git教程 从入门到实战----Git分支管理

切换回master分支

Git教程 从入门到实战----Git分支管理
此刻HEAD指针指向了master,此刻在检查fish.txt文件中的内容,就会发现内容现已恢复到本来未修正的状态
Git教程 从入门到实战----Git分支管理

分支兼并

咱们现在分两种挑选,

  • 一、直接将testing分支上的内容兼并到master分支,这样不会发生版别抵触的问题
  • 二、在master分支上继续进行修正,然后再挑选兼并分支,这样会发生版别抵触的问题

咱们先进行第一种直接兼并分支

git merge testing # 把指定分支兼并到当时分支

Git教程 从入门到实战----Git分支管理
此刻再检查fish.txt文件中的内容,就会发现本来再testing分支中修正的文件内容呈现到了master分支中 这种master分支没有内容改动的兼并不会呈现抵触的问题。

第二种便是master分支和testing分支都进行了修正,此刻在挑选兼并就会发生抵触 首先需求在在两个分支上分别修正并提交到版别库

  • 在testing分支下向文件中增加testing2222
    Git教程 从入门到实战----Git分支管理
  • 在master分支下向文件中增加master2222
    Git教程 从入门到实战----Git分支管理
    指令的全过程
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'  # 提交到版别库

Git教程 从入门到实战----Git分支管理
此刻兼并分支
Git教程 从入门到实战----Git分支管理

抵触(内容):兼并fish.txt中的抵触 主动兼并失利;修正抵触,然后提交成果

运用 git status也能够检查此刻发生抵触的文件

Git教程 从入门到实战----Git分支管理

为什么会发生抵触

其实便是在两个分支中一起修正了同一个文件的内容,在兼并时,Git不能够知道你需求那个文件里边的内容,所以就将两个文件修正的内容悉数保存下来,然后让你依据自己的需求进行内容的修正,这个也是后边处理代码抵触的基本思路

代码兼并抵触处理

发生抵触后,咱们先看一下发生抵触的文件内容

Git教程 从入门到实战----Git分支管理
此刻会发现文件中有部分数据分别是两个分支中各自增加的内容,运用<<<<<<< ,=======,>>>>>>>区分开来而且还提示那些内容是归于那一个分支的 然后咱们修正文件的内容,依据实践需求挑选需求的内容,
Git教程 从入门到实战----Git分支管理
处理抵触以后,再进行一次提交

git add .
git commit -'conflict fixed'

Git教程 从入门到实战----Git分支管理
至此抵触就现已处理 假如你想了解这段时间内发生的内容,能够检查详细的日志信息git log

分支兼并图

运用该指令git log --graph能够看到分支记载以及图

Git教程 从入门到实战----Git分支管理

删去分支

兼并代码以后就能够这个删去开发分支

git branch -d testing

Git教程 从入门到实战----Git分支管理

总结

本章咱们学习了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 > 删去分支