Git实战:branch分支操作详解
什么是分支
分支是指在主干道上分支的支线,可以前往不同的地方,也可以到达相同的终点(只是实现的路线不同)。Git指向团队开发中的个体,各开发者可以有自己的分支,开发时不会影响其他分支的开发进度。分支完成阶段性工作后,可以整合到上级分支。(功能开发完成,调试OK )这个上级分支一般是指Git默认创建的Master分支,这个分支不参与开发,只用于项目的管理、维护、集成、发布。
Git分支
Git分支不是复制所有数据,而是指向提交对象的指针。在执行“转移”(Git add )操作时,git会计算每个文件的有效性值,并将当前版本的文件快照保存在转移区域中并等待提交。此外,在执行git commit操作时,计算出的有效性值和快照将保存为树对象。每个commit对象都包含指定tree对象的哈希值,每个tree对象都包含指定blob对象的哈希值,因此Git不是文件的变化或差异,而是一系列不同时间点的文件由于Git分支的创建和切换实际上只是创建指针和查找指针,因此分支的创建和分支的切换几乎都是即时的。找到指针指向的commit对象,然后将工作区恢复为该commit对象所指向的文件快照。
Git提交
Git在每次提交时合并为一个时间线,每次提交时前进并形成分支。每次提交时,都会生成记录当前位置的id (散列值),头指向最后提交的位置)或当前分支。
创建分支
分支的创建本质上只是创建指向commit对象的指针,Git在初始化时自动创建第一个master分支和指向master的指针head。命令:可以使用 git branch 分支名称 创建指向当前提交对象的分支主节点的分支。也就是说,将在主节点上创建分支。VSCode创建分支也很容易,在左下角单击分支,下拉框就会出现。可以在此处创建新分支,也可以选择现有分支进行切换。
查看分支
使用指令:git branch可以看到所有的本地分支。其中标有*的表示当前的工作分支,如果想查看分支的详细信息,则命令:git branch -v可以查看分支所指的ID和提交信息。
切换分支
要使用分支,必须首先切换到该分支。可以使用命令 git checkout 分支名称 来实现可切换的分支。本质上是修改头部指针的指针,切换到分支,使工作区的内容指向分支最后提交的快照的内容。此时,master分支在提交时不移动,而是随着提交操作移动。命令:可以使用git checkout -b分支名称直接创建和切换指定的分支。这等同于运行了两个命令:切换新分支和分支。
分支合并
当分支完成了阶段性的开发完并调试好后我们就可以进行合并了,使用指令:git merge <分支名> 可以将指定分支合并到当前分支。注意这里是提交到当前分支,所以合并之前一定要确认下当前位于哪个分支上。如果要合并到master分支就需要先切换到master分支上,再执行git merge <分支名> 合并操作。当合并(merge)发生时会产生新的提交(commit),当前分支会自动向前移动并生成新的分支合并记录了。合并不会影响被合并的分支,可以重新切换到该分支继续提交修改。
删除分支
当分支任务完成并与其他分支合并之后,如果该分支不再参与后续工作或者不需要该分支时就可以进行删除。利用指令:git branch -d <分支名> 可以删除指定分支,当然删除分支前需要先切换到其他分支才能进行删除操作。如果要强制删除分支的话可以使用指令:git branch -D <分支名> ,不管该分支有没有合并到当前分支的提交记录都进行删除。
恢复分支
对于已经有提交记录的分支删除后,实际上只是删除指针其commit记录还被保留,恢复之前我们可以通过指令:git reflog查找该分支最后一次提交时的ID(最前面的hash值),我们可以根据ID创建新的分支来恢复之前的分支数据。恢复指令为:git branch <分支名> <hash值> ,当然你也可以从远程仓库重新clone一份。
总结:
分支可以从主线上分离开来,在不影响主线的同时继续工作。在分支上开发并调试好了后再合并到主分支,那么每个人就可以负责不同的模块开发而不会影响到别人。所以利用分支不仅可以高效的管理项目资源,也可以更好的协调人力进行并行开发,提高开发效率降低开发周期。以上内容是小编给大家分享的【Git实战:branch分支操作详解】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
Git实战:branch分支操作详解相关推荐
- Git 远程库操作详解
CSDN GitHub Git 远程操作详解 AderXCoding/system/tools 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢 ...
- Git 远程操作详解(再不会 Git 就真的没团队收你了,嗯哼)
Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...
- Redis实战和核心原理详解(4)Redis存储Key的一种设计实现方式:模式匹配
注意:此方案仅为演示Redis 的使用,正式生产环境切勿使用! 相关文章: Redis实战和核心原理详解(1)Centos7.0下安装Redis 5.0详细过程和使用常见问题 Redis实战和核心原理 ...
- SVN的Windows和Linux客户端操作详解
SVN的Windows和Linux客户端操作详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Windows客户端操作 1.安装SVN客户端 a>.去官网下载svn软件 ...
- java switch 值_Java switch多值匹配操作详解
这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大 ...
- Git常用命令——分支操作
Git常用命令--分支操作 分支操作 git branch 列出,创建或者删除分支 git branch <branchName> :创建一个分支 git branch -d <br ...
- ext4数据恢复实战及文件系统结构详解
ext4数据恢复实战及文件系统结构详解 一.前言 二.ext4数据恢复实战 三.ext4文件系统结构详解 四.ext4分区结构 五.ext4目录结构 六.目录项的删除特性 七.ext4文件结构 八.最 ...
- java case 多个值_Java switch多值匹配操作详解
这篇文章主要介绍了Java switch多值匹配操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 我们都知道 switch 用来走流程分支,大 ...
- 204B实战应用-LMK04821代码详解(二)
204B实战应用-LMK04821代码详解(二) 一. SPI协议 通过阅读LMK04821数据手册,我们可以从中知道,可以通过SPI协议对LMK04821进行寄存器的配置工作,进而实现我们设计所需要 ...
最新文章
- node上传资源到又拍云
- 操作系统信号量与P、V操作 初步认识整理
- 洛谷P3368 【模板】树状数组 2(Python和C++代码)
- 《架构漫谈》读书笔记五
- 两数之和C++代码实现超详细讲解
- 人工智能第六课:如何做研究
- HDU-1251 统计难题 map写法
- 令人迷惑的硬币翻转(洛谷P1146题题解,Java语言描述)
- 【Junos】手动生成Core-dump文件
- Python实战从入门到精通第十九讲——自定义字符串的格式化
- 神策数据推荐系统:中文关键词提取新模型
- 清华大学计算机网络体系结构,清华大学计算机网络体系结构讲义ch32(OSPF).pdf
- Android之WindowManager+OpenGL+EGL绘制(十七)
- C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)...
- 软路由虚拟服务器,带你入门软路由 篇三:软路由也玩虚拟化——轻松几步教你配置Esxi网卡直通和软路由虚拟机设置(保姆级教程)...
- jpg图片怎么压缩大小?简单快捷的方法教给你
- (转载)IT行业都有哪些职位,初学者(0基础,新人)该如何选择,才能够快速进入这个行业?
- 新手教学,如何快速地画一个PCB板子
- jadx 1.4.5反编译包不全
- abp构建Web API服务