本文介绍: 本章开始介绍 Git 的杀⼿级功能之⼀(注意是之⼀,也就是后⾯还有之⼆,之三……):分⽀。分⽀就是科幻电影⾥⾯的平⾏宇宙,当你正在电脑前努⼒学习 C++ 的时候,另⼀个你正在另⼀个平⾏宇宙⾥努⼒学习 JAVA如果两个平⾏宇宙互不⼲扰,那对现在的你也没啥影响。不过,在某个时间点,两个平⾏宇宙合并了,结果,你既学会了 C++ ⼜学会了 JAVA!在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。

在这里插入图片描述
在这里插入图片描述
本章开始介绍 Git 的杀⼿级功能之⼀(注意是之⼀,也就是后⾯还有之⼆,之三……):分⽀。分⽀就是科幻电影⾥⾯的平⾏宇宙,当你正在电脑前努⼒学习 C++ 的时候,另⼀个你正在另⼀个平⾏宇宙⾥努⼒学习 JAVA
如果两个平⾏宇宙互不⼲扰,那对现在的你也没啥影响。不过,在某个时间点,两个平⾏宇宙合并了,结果,你既学会了 C++ ⼜学会了 JAVA!
在这里插入图片描述
在版本回退⾥,你已经知道,每次提交,Git都把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀。截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即master分⽀。再来理解⼀下HEAD,HEAD严格来说不是指向提交,⽽是指向master,master才是指向提交的,所以,HEAD指向的就是当前分⽀
在这里插入图片描述
每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越来越⻓,⽽HEAD只要⼀直指向master分⽀即可指向当前分⽀
通过查看当前的版本库,我们也能清晰的理出思路

@139-159-150-152:~/gitcode$ cat .git/HEAD
ref: refs/heads/master
@139-159-150-152:~/gitcode$ cat .git/refs/heads/master
5476bdeb12510f7cd72ac4766db7988925ebd302

创建分⽀

Git⽀持我们查看或创建其他分⽀,在这⾥我们来创建第⼀个⾃⼰的分⽀dev ,对应的命令为:

@139-159-150-152:~/gitcode$ git branch #查看当前本地所有分⽀
* master
@139-159-150-152:~/gitcode$ git branch dev #新建分⽀dev
@139-159-150-152:~/gitcode$ git branch
dev
* master

当我们创建新的分⽀后,Git新建了⼀个指针叫dev, * 表⽰当前 HEAD指向的分⽀是 master 分⽀。另外,可以通过⽬录结构发现,新的 dev 分⽀

@139-159-150-152:~/gitcode$ ls .git/refs/heads/
dev master
@139-159-150-152:~/gitcode$ cat .git/refs/heads/*
5476bdeb12510f7cd72ac4766db7988925ebd302
5476bdeb12510f7cd72ac4766db7988925ebd302

发现⽬前dev和master指向同⼀个修改。并且也可以验证下HEAD⽬前是指向 master 的

@139-159-150-152:~/gitcode$ cat .git/HEAD
ref: refs/heads/master

在这里插入图片描述

切换分⽀

那如何切换到dev分⽀下进⾏开发呢?使⽤ git checkout 命令即可完成切换,⽰例如下:

@139-159-150-152:~/gitcode$ git checkout dev
Switched to branch 'dev'
@139-159-150-152:~/gitcode$ git branch
* dev
master
@139-159-150-152:~/gitcode$ cat .git/HEAD
ref: refs/heads/dev

在这里插入图片描述
我们发现HEAD已经指向了dev,就表⽰我们已经成功的切换到了dev上
接下来,在 dev 分⽀下修改ReadMe⽂件,新增⼀⾏内容,并进⾏⼀次提交操作

@139-159-150-152:~/gitcode$ vim ReadMe
@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write aaa for new branch
@139-159-150-152:~/gitcode$ git add .
@139-159-150-152:~/gitcode$ git commit -m"modify ReadMe"
[dev 3740dce] modify ReadMe
1 file changed, 1 insertion(+)

现在,dev分⽀的⼯作完成,我们就可以切换回master分⽀:

@139-159-150-152:~/gitcode$ git checkout master
Switched to branch 'master'
@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3

切换回master分⽀后,发现ReadMe⽂件中新增的内容不⻅了!!!赶紧再切回dev看看:

@139-159-150-152:~/gitcode$ git checkout dev
Switched to branch 'dev'
@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write aaa for new branch

在dev分⽀上,内容还在。为什么会出现这个现象呢?我们来看看dev分⽀和master分⽀指向,发现两者指向的提交是不⼀样的

@139-159-150-152:~/gitcode$ cat .git/refs/heads/dev
bdaf528ffbb8e05aee34d37685408f0e315e31a4
@139-159-150-152:~/gitcode$ cat .git/refs/heads/master
5476bdeb12510f7cd72ac4766db7988925ebd302

看到这⾥就能明⽩了,因为我们是在dev分⽀上提交的,⽽master分⽀此刻的提交点并没有变,此时的状态如图如下所⽰
在这里插入图片描述
当切换到master分⽀之时,HEAD就指向了master,当然看不到提交了!

合并分⽀

为了在master主分⽀上能看到新的提交,就需要将 dev 分⽀合并到 master 分⽀,⽰例如下

@139-159-150-152:~/gitcode$ git branch
* dev
master
@139-159-150-152:~/gitcode$ git checkout master # 切换到 master 上进⾏合并
Switched to branch 'master'
@139-159-150-152:~/gitcode$ git merge dev # 合并 dev 分⽀
Updating 16623e1..3740dce
Fast-forward
ReadMe | 1 +
1 file changed, 1 insertion(+)
@139-159-150-152:~/gitcode$ cat ReadMe
hello bit
hello git
hello world
hello version1
hello version2
hello version3
write aaa for new branch

git merge 命令⽤于合并指定分⽀到当前分⽀ 合并后,master就能看到dev分⽀提交的内容了 此时的状态如图如下所⽰
在这里插入图片描述
Fast-forward代表“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度⾮常快当然,也不是每次合并都能Fast-forward,我们后⾯会讲其他⽅式的合并

删除分⽀

合并完成后,dev分⽀对于我们来说就没⽤了,那么dev分⽀就可以被删除掉,注意如果当前正处于某分⽀下,就不能删除当前分⽀,如:

@139-159-150-152:~/gitcode$ git branch
* dev
master
@139-159-150-152:~/gitcode$ git branch -d dev
error: Cannot delete branch 'dev' checked out at '/home/hyb/gitcode'

⽽可以在其他分⽀下删除当前分⽀,如:

@139-159-150-152:~/gitcode$ git checkout master
Switched to branch 'master'
@139-159-150-152:~/gitcode$ git branch -d dev
Deleted branch dev (was bdaf528).
@139-159-150-152:~/gitcode$ git branch
* master
1 2 3 4 5 6 7

此时的状态如图如下所⽰
在这里插入图片描述
因为创建、合并和删除分⽀⾮常快,所以Git⿎励你使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全
在这里插入图片描述

在这里插入图片描述

原文地址:https://blog.csdn.net/fjj2397194209/article/details/135561851

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_56648.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注