目录
[1.1 定义](#1.1 定义)
[1.2 基本概念](#1.2 基本概念)
[1.3 特点与优势](#1.3 特点与优势)
[1.4 Git分支操作命令](#1.4 Git分支操作命令)
[1.4.1 查看分支](#1.4.1 查看分支)
[1.4.2 创建分支](#1.4.2 创建分支)
[1.4.3 删除分支](#1.4.3 删除分支)
[1.4.4 切换分支](#1.4.4 切换分支)
[1.4.5 创建并切换到新建分支](#1.4.5 创建并切换到新建分支)
[1.5 场景应用](#1.5 场景应用)
[1.5.1 前期准备](#1.5.1 前期准备)
[1.5.2 具体操作](#1.5.2 具体操作)
[2.1 定义](#2.1 定义)
[2.2 类型](#2.2 类型)
[2.3 标签命令](#2.3 标签命令)
[2.3.1 创建标签](#2.3.1 创建标签)
[2.3.2 查看标签](#2.3.2 查看标签)
[2.3.3 进入标签(切换到标签所指向的提交):](#2.3.3 进入标签(切换到标签所指向的提交):)
[2.3.5 删除标签](#2.3.5 删除标签)
[2.4 标签规范](#2.4 标签规范)
[2.5 场景应用](#2.5 场景应用)
一、Git分支
1.1 定义
- 在Git中,分支(Branch)是一种用来表示项目工作进程的引用,它指向某次提交(commit),并且包含了该提交及其所有父提交的快照。
- 分支的存在使得可以在同一代码库中同时进行多个不同的工作,而不会相互影响。每个分支都代表了项目的一个独立线条,开发者可以在不同的分支上进行独立的开发、测试和实验。
1.2 基本概念
以下是一些关于Git分支的基本概念:
- 主分支(Master/Main):
- 主分支通常是项目的主要分支,包含了稳定和可发布的代码。
- 在一些新的项目中,可能使用"main"作为主分支的名称,而在传统项目中,使用"master"作为主分支名称。
- 创建分支:
- 使用
git branch
命令可以创建一个新的分支。例如,git branch feature-branch
会创建名为 "feature-branch" 的新分支,但并不会切换到该分支。
- 切换分支:
- 使用
git checkout
或者git switch
命令可以切换到其他分支。例如,git switch feature-branch
将切换到名为 "feature-branch" 的分支。
- 创建并切换分支:
- 使用
git checkout -b
或者git switch -c
命令可以创建并切换到新的分支。例如,git checkout -b new-feature
将创建并切换到名为 "new-feature" 的分支。
- 查看分支:
- 使用
git branch
命令可以列出所有本地分支,而git branch -r
可以列出所有远程分支。
- 合并分支:
- 使用
git merge
命令可以将一个分支的更改合并到另一个分支。例如,从主分支合并到特性分支:先切换到特性分支,然后运行git merge master
。
- 删除分支:
- 使用
git branch -d
命令可以删除已经合并的分支,而git branch -D
可以强制删除未合并的分支。8. 远程分支:
- 远程分支是存在于远程仓库的分支。可以使用
git fetch
更新远程分支信息,然后使用git checkout
或者git merge
切换到或合并远程分支。9. 推送分支:
- 使用
git push
命令可以将本地分支推送到远程仓库。例如,git push origin feature-branch
将本地的 "feature-branch" 推送到远程仓库的同名分支。10. 拉取分支:
- 使用
git pull
命令可以从远程仓库拉取分支并合并到当前分支。
1.3 特点与优势
Git分支具有许多特点和优势,使得它成为版本控制系统中强大而灵活的工具。以下是Git分支的一些主要特点和优势:
并行开发:
- 分支允许开发者同时处理多个任务,每个任务都可以在独立的分支上进行。这使得团队能够并行开发不同的功能、修复不同的bug,而不会互相干扰。
独立实验:
- 可以创建一个新的分支来尝试新的想法或实验性的开发,而不会影响主干代码。如果实验成功,可以将分支合并回主干;如果失败,可以轻松地放弃分支。
任务隔离:
- 每个分支都代表一个独立的工作线条,因此可以在不同的分支上进行不同任务的开发,而不必担心它们之间的冲突。这提高了代码的可维护性和开发效率。
快速切换:
- 可以轻松地在不同的分支之间切换,使得开发者能够灵活地切换到不同的工作上下文。这是通过使用
git checkout
或git switch
命令实现的。版本历史清晰:
- 分支的使用可以使版本历史变得更加清晰。每个分支都有自己的提交历史,合并时也会保留有关分支的信息,使得项目的演进更易于理解。
风险分散:
- 在主分支上进行重大更改可能会带来一些风险,但使用分支可以将这些更改隔离在一个单独的分支上,直到它们经过充分测试并准备好合并。
团队协作:
- 团队成员可以在各自的分支上进行独立的工作,然后定期将其更改合并到主分支。这种方式有助于减少合并冲突,并促进团队协作。
临时修复:
- 可以创建一个临时的分支来修复紧急的bug,而不必影响正在进行的其他开发工作。修复完成后,可以将该分支合并回主分支。
1.4 Git分支操作命令
Gitee新建仓库:
初始化readme文件:
复制SSH地址:
打开Git Bash进行克隆:
1.4.1 查看分支
命令如下:
git branch
1.4.2 创建分支
git branch 分支名
1.4.3 删除分支
git branch -d 分支名
注:在当前分支下不能删除当前分支
1.4.4 切换分支
git checkout 分支名
当然,切换分支跟删除分支可以联立起来一起使用,即没有当前分支的情况下切换到新建的分支。
1.4.5 创建并切换到新建分支
git checkout -b 分支名
1.5 场景应用
案例假想:
人员:
- 开发人员
- 测试人员
场景:
- 假设在正式环境下,开发人员在正式环境开发了十个功能模块(此处我们用十个java文件来进行模拟),但是实际上只有六个模块功能能够正常使用,而剩余的其他四个模块功能有问题,不能正常使用。那么此时开发人员开发的十个模块因为只有六个能用,所以将这六个模块打包进行测试(这里即交给Git进行管理)。
1.5.1 前期准备
在项目目录下新建十个文件,代表上述所说的十个功能模块,如下:
1.5.2 具体操作
Person1-6是没有问题的模块,7-10是有问题的模块。即:
使用gui打开图形操作界面,右键点击Git GUI 。点击文件图标,将前六个模块交给Git管理:
因Person1-6功能无问题,将Person1-6提交到测试环境中进行测试,
输入命令 git commit -am "六个模块功能完成,加入测试环境进行测试",如下
提交完之后,开发环境中,就只能看到剩余未提交的有功能性问题的模块了,如下:
之后,我们进入到测试环境中,在本地的文件夹中是看不到在测试环境中的文件的,输入命令进入测试环境 : git checkout ceshi
更换到测试环境后(此时测试环境上是没有任何代码的),如下:
- 那么这里可能有人就要问了,为什么在测试环境下,本地资源文件看到的却是开发人员未提交的有问题的功能模块呢?
因为这四个有问题的功能模块是未暂存的,不属于任何分支。
那么测试人员要想测试,就必须先将开发分支上的代码合并到测试分支上去,才能进行测试,输入命令:git merge kaifa , 如下:测试完成后,我们进入到开发环境中,将开发环境作为一个分支上传到远程仓库中,
命令 : git checkout kaifa ( 进入开发环境 )
命令 : git push origin kaifa ( 将开发环境作为一个分支上传到远程仓库中 )
具体操作如下:
然后我们再进入到测试环境中,将测试环境作为一个分支上传到远程仓库中,命令 : git checkout ceshi( 进入测试环境 )
命令 : git push origin ceshi( 将测试环境作为一个分支上传到远程仓库中 )
具体操作如下:
上传后,在远程仓库中的这个分支里,就可以看到当时测试环境的所有模块及代码和文件。
二、Git标签
2.1 定义
在Git中,标签(Tag)是用于标记特定提交的引用。它是一个指向某个特定提交的不可变的引用,通常用于标识版本发布或其他重要的里程碑。与分支不同,标签通常不会移动,因此它是一个静态的指针,永远指向特定的提交。
2.2 类型
标签在Git中有两种主要类型:
- 轻量标签(Lightweight Tag)
- 附注标签(Annotated Tag)
2.3 标签命令
2.3.1 创建标签
git tag <tag_name> # 创建一个轻量标签,标签名称 : <tag_name>
git tag -a <tag_name> -m "tag message" #创建一个带注释的标签
2.3.2 查看标签
git tag # 列出所有标签
2.3.3 进入标签(切换到标签所指向的提交):
git checkout <tag_name> # 切换到名为<tag_name>的标签所指向的提交
2.3.4上传标签(推送标签到远程仓库)
git push origin <tag_name> # 将名为<tag_name>的标签推送到远程仓库
git push --tags # 将所有本地标签推送到远程仓库
2.3.5 删除标签
git tag -d <tag_name> # 将名为<tag_name>的标签删除
git push origin :refs/tags/<tag_name> # 将在远程仓库名为<tag_name>的标签删除
2.4 标签规范
在 Git 中,标签的命名规范可以根据个人或团队的习惯来制定,但是一般来说,建议遵循以下规范:
- 标签名应该简短、有意义,并且能够清晰地表达该标签所代表的含义。
- 标签名应该使用英文单词,可以包含数字和连字符(-),但是不要包含空格或其他特殊字符。
- 如果要创建一个版本号标签,建议使用语义化版本号(Semantic Versioning,简称 SemVer)规范,格式为 `v1.0.0.20231111`,其中 v1表示主版本号,第一个0表示次版本号,第二个0表示修订号,20231111表示日期。
- 如果要创建一个带注释的标签,建议在注释中包含该标签的详细信息,例如该版本的功能特性、修复的 bug、重要的变更等。
补充:
语义化版本号后可以再加个.xxx后缀,如后缀为 :
- .alpha 表示开发环境
- .beta 表示测试环境
- .rc 表示灰度环境
- .r 表示生成环境
这些规范旨在提高标签的可读性和管理性,确保团队成员能够轻松地理解标签的目的和含义。选择适合项目需求的标签规范,并在整个团队中强调一致性,有助于更好地组织和维护版本信息。
2.5 场景应用
进入开发环境(kaifa),创建一个相对开发环境的标签,并且上传到自己的远程仓库,命令如下:
命令 : git checkout kaifa( 进入开发环境 )
命令 : git tag v1.0.0.20231111.alpha ( 创建标签 )
命令 : git push origin v1.0.0.20231111.alpha ( 将标签上传到远程仓库 )
具体操作如下:上传后,在远程仓库汇中就可以看到该标签,并且标识上传的开发环境的分支。
进入生成环境(master),创建一个相对生成环境的标签,并且上传到自己的远程仓库,命令如下:
命令 : git checkout master ( 进入生成环境 )
命令 : git tag v2.0.0.20231111.r ( 创建生成环境标签 )
命令 : git push origin v2.0.0.20231111.r ( 上传到远程仓库 )
具体操作如下:然后我们回到Gitee码云查看远程仓库是否有这两个标签。如下:
在远程仓库中可以看到已上传的两个标签。
注:
如果发现,上传到远程仓库的标签有误,需要删除。具体操作顺序如下:
我们需要先将本地的标签进行删除,在将远程仓库的标签删除才可。
删除标签命令如下:
命令 : git tag -d v2.0.0.20231111.r ( 将本地的标签删除 )
命令 : git push origin :refs/tags/v2.0.0.20231111.r ( 将远程仓库标签删除 )
具体操作如下:
在Gitee码云远程仓库中可以看到生成环境的标签已经删除,如图 :
三、收获
学习Git分支和标签是使用Git进行版本控制的关键部分,对于个人开发者和团队来说都是非常有益的。以下是学习Git分支与标签给我带来的一些主要收获:
Git分支:
并行开发: 了解如何使用分支使得团队能够在同一时间内独立地开发不同的功能或修复不同的问题,从而提高开发效率。
特性分支: 学会使用特性分支,使得每个新功能或变更都有一个专门的分支,便于跟踪和管理。
分支合并: 理解分支合并的概念,学会如何将一个分支的更改合并到另一个分支,确保代码的完整性和一致性。
冲突解决: 了解并学会解决分支合并中可能发生的冲突,学会使用工具或手动解决冲突。
远程分支: 了解如何与远程仓库同步分支,包括推送本地分支到远程仓库以及拉取远程分支到本地。
分支管理策略: 了解和选择适合项目的分支管理策略,如Git Flow等,以便更好地组织和协调团队的工作。
Git标签:
版本发布: 学会使用标签来标记项目的重要版本发布,使得每个发布都有一个清晰的标识。
语义化版本控制: 了解语义化版本控制(Semantic Versioning)的概念,并学会如何使用标签来遵循版本号规范。
标签注释: 学会使用附注标签并添加有意义的注释,以便在查看标签历史时了解每个版本的变更和目的。
标签的推送与删除: 学会将本地标签推送到远程仓库,以及在需要的情况下删除本地和远程的标签。
版本回滚: 了解如何使用标签来回滚到特定版本,以处理紧急问题或回退到稳定的版本。
团队协作: 学会在团队协作中合理使用标签,以便整个团队能够清晰地了解项目的版本历史和状态。
通过学习这些Git分支和标签的概念和技巧,你将能够更高效地进行代码管理、团队协作,并更好地组织项目的版本历史。这些技能对于任何使用Git进行版本控制的开发者都是非常重要的。
最后Git分支与Git标签的介绍及其场景应用就到这里,祝大家在敲代码的路上一路通畅!
感谢大家的观看 !