【b站李同学的Lee】2 Git进阶【git&github】入门教程,必学!

课程地址:【【git&github】入门教程,必学!】 https://www.bilibili.com/video/BV1cE411G7yc/?share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155

目录

2 Git进阶

2.1 分支

2.1.1 分支细分

2.1.2 分支命令

1查看分支

2 创建分支

3 切换分支

4 合并分支

5 删除分支

2.2 暂时保存更改


2 Git进阶

2.1 分支

为便于理解,暂时可以认为分支就是当前工作目录中代码的一份副本。

使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。

比如在一个分支上开发新功能,在另一个分支上修复bug。

2.1.1 分支细分

1 主分支(master):第一次向git仓库提交更新记录时自动产生的一个分支。

当第一次向git仓库提交项目状态时,git会自动产生一个以时间点分隔的线,这条线就是分支。

分支上每一个时间点都代表一次git提交。

git自动产生的这条分支叫做主分支,master就是主分支的名字。

2 开发分支(develop):作为开发的分支,基于master分支创建

git中,除了主分支以外,还可以基于主分支创建其他分支。

为什么要创建其他分支?创建其他分支,可以让我们从开发主线分离出来,以免影响开发主线。

在实际开发过程中,一定要保持开发主线的稳定性,也就是保持主分支中代码的稳定性。

主分支的代码一般是用于向外界发布的代码,所以一般开发工作不会在主分支上进行。

在开发过程中,都会创建一条开发分支,当功能在开发分支上完成之后,经过测试没有问题,再将开发分支的代码合到主分支上。

开发分支可以理解为主分支的副本,功能在副本上开发,开发完成后将副本中的代码拷贝到主分支上。

开发工程中,分支与分支之间是独立的,互不影响。

3 功能分支(feature):作为开发具体功能的分支,基于开发分支创建

在实际过程中,除了主分支和开发分支外,还会有功能分支。

功能分支基于开发分支创建,作用是开发一个独立的功能。

当功能开发完成后,将功能分支的代码合并到开发分支,此时功能分支就可以删除了。

当开发分支的功能累积到一定程度,将开发分支的代码合并到主分支上。

即具体的功能在功能分支上进行,具体的功能在功能分支上开发完成后,要将功能分支合并到开发分支。开发分支的功能累积到一定程度后,最终将开发分支合并到主分支。

为什么要这样做?因为开发分支也要保持最大程度的稳定性。

4 分支的其他功能

分支还可以存储不同软件的版本,比如jQuery,有1.0,2.0和3.0等版本。

不同版本的jQuery可以放在不同分支中分别开发。

2.1.2 分支命令

查看分支:git branch

创建分支:git branch 分支名称 

切换分支:git checkout 分支名称

合并分支:git merge 来源分支

删除分支(分支被合并后才允许删除 -D 强制删除):git branch -d 分支名称   

强制删除分支: git branch -D 分支名称

实践

1查看分支

git branch

查看分支

在当前仓库中有一个默认分支,master主分支。

master 是第一次向git仓库中提交项目状态时,git程序自动创建的。

* master,*表示当前处于master分支上。

如果存在多个分支,其他分支处于未选中的状态,那么分支的颜色是白色的,且分支名称前没有星号*

此外,git程序中工作目录后的括号,括号中显示的就是当前所在分支的分支名称。

2 创建分支

git branch 分支名称

创建分支,分支名称是自定义的。

注意:当前在哪个分支上进行的操作,就是在哪个分支上创建分支,相当于基于哪个分支创建副本

下面的命令含义就是基于master分支创建develop分支。

查看分支

现在分支列表中已经存在develop分支了。(现在仍然处于master主分支上)

 

3 切换分支

git checkout 分支名称

切换分支

现在已经切换到develop分支上了。

此时develop分支已经是绿色字体,且前有星号*,且工作目录后面的括号中也显示develop。

注意:切换分支之前,当前分支的工作已经要提交到git仓库中,保持当前分支的工作区是完全干净的状态,否则会出现问题。

在开发分支上创建的文件,在主分支上就不应该看到。

4 合并分支

git merge 来源分支

合并分支

场景:如果在当前分支上的工作已经完成,则可以将当前分支合并到其他分支中去。

实践:将开发分支合并到主分支上。

步骤1 切换到主分支上(站在主分支的角度合并开发分支)

步骤2 git merge 被合并的分支名称

注意:虽然这里将开发分支合并到主分支上,但是开发分支还是存在的。合并完成后,可以切换回开发分支,在开发分支上继续开发。

看一下合并分支的提示。

5 删除分支

git branch -d 分支名称

删除分支

如果某个分支上的工作已经完成,且这个分支不需要继续存在,此时可以删除这个分支。

d是delete的缩写。

实践

注意:如果要删除的分支没有被合并,那么默认这个分支是不能被删除的。这是git程序对分支的保护机制。防止开发人员误删文件。

如果这个分支真的没有合并,就是不需要了,可以强制删除。命令:git branch -D 分支名称。

实践:1 创建一个新分支;2 切换到这个新分支;3 在新分支上提交代码;4 切换到其他分支;5 强制删除这个新分支。

注意:如果要删除分支A,那么当前所处的分支不能是分支A。

2.2 暂时保存更改

2.1.2 说过在切换分支前,要将当前分支的所有改动提交才能切换分支,否则就会出现问题。

但是实际的开发过程中,经常遇到正在开发新功能,但此时测试过来说之前开发过的功能存在严重bug,必须要立即修复。

但是当前分支上的新功能还未开发完成,此时不想提交然后切换到新分支上修改bug。

遇到以上场景该怎么解决?

在git中,可以暂时提取分支上的所有改动并存储,让开发人员得到一个干净的工作副本(也就是说一个不存在任何改动的工作目录,然后就可以随意切换分支了),临时转向其他工作。

当修改完bug后,切换回原来的分支,就可以将刚才的改动恢复回来,然后继续开发新功能。

git提供了储藏功能。可以理解为剪贴板,可以提取分支上所有的改动并将改动保存起来。

使用场景:分支临时切换

存储临时改动:git stash

恢复改动:git stash pop

一旦所有的改动被恢复,那么剪贴板上就不存在这些改动。

注意:git的储藏功能是独立于分支的。即在其他分支上也可以执行储藏命令。如果其他分支上执行此命令,就会将这个改动恢复到其他分支上。所以执行命令前要搞清楚当前所在的分支是什么。

实践

1 创建新分支并切换到新分支上

2 将新分支上的改动add到暂存区

此时text分支有改动,不是一个干净的工作目录。此时是不能切换分支的。如果切换分支,text.html就会被携带到其他分支上(前提是text.html存到暂存区)。text.html提交后才能切换分支。但是有的时候不想提交,因为此时text.html上的工作没有完全完成。

stash命令,将当前分支上所有的命令先剪切出来,存到git提供的剪贴板。

实践

执行git stash,此时text分支上的改动就被存到剪贴板上了。命令行也给出了,工作目录已保存。

使用git status查看当前工作区的状态。

On branch text —— 此时处于text分支上。

Nothing to commit,working tree clean —— 没有什么可以提交,工作区是干净的状态。

此时就可以切换分支了。

切换到master分支,此时没有text.html文件。

然后再切换回text分支,执行git stash pop,text.html就回来了。

相关推荐

  1. 4.2 题 - B 相生相克

    2024-04-14 12:06:01       59 阅读
  2. Python学习入门2)——功能

    2024-04-14 12:06:01       32 阅读
  3. Git

    2024-04-14 12:06:01       54 阅读
  4. Git指南

    2024-04-14 12:06:01       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-14 12:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-14 12:06:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-14 12:06:01       82 阅读
  4. Python语言-面向对象

    2024-04-14 12:06:01       91 阅读

热门阅读

  1. gitee详细介绍

    2024-04-14 12:06:01       31 阅读
  2. opencv对图片更换背景图(底色)

    2024-04-14 12:06:01       37 阅读
  3. python私有函数和__XX__魔术方法

    2024-04-14 12:06:01       33 阅读
  4. 第六周学习笔记DAY.2

    2024-04-14 12:06:01       37 阅读
  5. photoshop2022增效工具ICOFormat.8bi(PS ico插件)

    2024-04-14 12:06:01       28 阅读
  6. 【面试】项目经理常见面试题

    2024-04-14 12:06:01       34 阅读
  7. JCYZ H3CNE-RS+

    2024-04-14 12:06:01       152 阅读