🎉🎉欢迎来到我的CSDN主页!🎉🎉
🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚
🌟推荐给大家我的专栏《Git》。🎯🎯
👉点击这里,就可以查看我的主页啦!👇👇
🎁如果感觉还不错的话请给我点赞吧!🎁🎁
💖期待你的加入,一起学习,一起进步!💖💖
一、分支与标签在开发过程中的实际场景
1.1.什么是分支与标签
分支(Branches):
- 功能开发:当团队成员需要开发新的功能时,可以创建一个新的功能分支。这个分支可以独立于主开发线,不影响其他开发工作,同时允许团队成员在不干扰主要开发线的情况下进行工作。
- Bug 修复:如果在主开发线上发现了 Bug,团队可以创建一个专门的修复分支来解决问题,而不必等待当前正在进行的开发完成。
- 版本发布:在准备发布新版本时,可以为发布创建一个专门的分支。这样团队可以继续在主开发线上进行新功能的开发,同时在发布分支上进行最后的稳定性测试和 bug 修复。
标签(Tags):
- 版本发布:当软件达到一个里程碑式的版本,比如一个重要的发布版本或者里程碑版本,团队可以为该版本创建一个标签。这个标签可以被用来标识对应版本的代码状态,方便日后回溯和管理。
- 重要事件:有些团队会在代码中打标签以标识重要事件,比如重大功能上线、重要的架构调整等,以便日后追踪了解项目发展的历程。
1.2.开发环境分层
开发(Development):
- 代表着程序员或开发团队编写、调试和测试新功能或修改现有功能的阶段。
- 在开发环境中,开发人员可以自由地进行代码编辑、构建和调试,以实现新功能或解决现有问题。
- 这个阶段通常是代码变动最频繁、灵活度要求最高的阶段。
测试(Testing):
- 代表着对开发完成的功能、模块或整体系统进行各种测试,包括单元测试、集成测试、验收测试等。
- 在测试环境中,测试人员或自动化测试工具会对软件进行严格的测试以确保其功能的正确性、性能的稳定性等。
- 这个阶段的重点是验证软件的质量,发现并修复潜在的缺陷。
演示(Staging):
- 代表着将已经通过开发和测试的功能部署到一个类似生产环境的环境中进行最终的集成测试和验证。
- 在演示环境中,通常会模拟真实的生产环境配置,包括数据库、缓存、消息队列等,以确保软件能够正常运行并与其他系统协作。
- 这个阶段的目标是确保部署到生产环境之前的系统稳定性和一致性。
生产(Production):
- 代表着最终用户会接触到的实际运行环境,软件在这里提供服务并处理真实的数据和用户请求。
- 在生产环境中,软件需要保持高可用性、高性能和安全性,并且通常需要与监控系统结合以及随时准备应对故障。
- 这个阶段的关注点是确保系统可靠地为最终用户提供服务,并及时响应和处理各种异常情况。
1.3.分支与标签的关系
- "dev"阶段对应"alpha"状态,表示正在开发阶段的软件版本。
- "test"阶段对应"beta"状态,表示正在测试阶段的软件版本。
- "pre"阶段对应"rc"状态,表示预发布或者灰度测试阶段的软件版本。
- "pro"阶段对应"r"状态,表示正式发布或者生产环境中的软件版本。
在标签后缀中标明状态有以下几个好处
清晰的版本状态识别:通过在标签后缀中标明状态,可以清晰地识别出当前版本处于哪个阶段,包括开发、测试、预发布和生产等状态。这有助于团队成员和其他相关人员快速理解当前版本所处的位置,以及该版本适合在何种环境中使用。
方便的版本管理:带有状态后缀的标签能够方便地进行版本管理。开发团队可以根据不同状态的标签快速定位到相应阶段的版本,并且能够在不同环境中进行相应版本的部署和测试,从而提高版本管理的效率。
统一的命名规范:通过在标签后缀中标明状态,可以建立统一的命名规范,使得团队内部对于各个阶段版本的命名统一,降低了沟通成本和误解的可能性。
便于追溯历史记录:在项目历史记录中,带有状态后缀的标签可以帮助开发人员更容易地追溯到不同阶段的版本。这对于查找特定阶段的代码状态或者回溯历史版本是非常有帮助的。
支持并行开发和发布:通过标签后缀标明状态,不同状态的版本可以并行存在,并且能够清晰地区分开来。这有助于支持团队在不同阶段进行并行开发和发布,提高了团队的灵活性和效率。
二、Git分支的讲解
2.1.GitBashHere操作分支
查看分支
git branch //查看本地分支 git branch -a //查看远程分支
可以看到我们除了默认的master并无其他分支
创建分支git branch name //仅仅保存本地,远程还需要push
Git分支的命名规范dev/test/pre/pro(即master)
切换分支git checkout name
创建+切换分支git checkout -b name
合并某分支到当前分支 git merge name
我先在dev提交五个文件后再到test合并
分支提交远程git push origin name
删除分支(先删除本地才能删除远程,删除本地需要先切其他分支)
git branch -d name //删除本地分支 git push origin --delete dev //删除远程分支
2.2.IDEA中操作分支
右键git工程,进入git,选择Branches
选择要切换的分支
当前的分支是master,我新建一个dev2并切换
选中要切换的分支,checkout确定
当前所处的就是dev2分支了
但是 “Remote Branches” 下依然只有一个 master 分支,表明在我们的远程仓库依然只有一个master 分支,因此我们还需要把在本地仓库新建的分支推送到远程仓库中,这样就可以在远程仓库中看到新建的分支了。
单击dev2 ,然后在左边单击 “Push” ,弹出推送对话框。单击 “Push” 推送到远程仓库,这样分支新建操作彻底完成,可以看到在"Remote Branches"分支下面出现了“dev2 ”,我们可以在该分支进行编码并进行拉取和推送操作。
如果删除分支之前,建议先切换到(Checkout)其他分支,例如,Checkout到master分支,当然这并不强制,只是为了方便删除分支而已
三、Git标签的讲解
3.1.GitBashHere操作标签
发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。
查看所有标签git tag
标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息
创建tag
首先,切换到需要打标签的分支上,例如:test,再创建标签
Tag格式: 主版本号.次版本号.修订号-类型标签,其中类型标签可为:alpha、beta、rc、r。
Tag示例:1.0.0-alpha、1.0.0-beta、1.0.0-rc、1.0.0-r
推送标签到远程git push origin
删除tag
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除 git tag -d 1.0.0-alpha 然后,再从远程删除。删除命令也是push,但是格式如下: git push origin :refs/tags/1.0.0-alpha
3.2. IDEA中操作标签
idea创建tag
可以右键项目,然后按照 Git -> Repository -> Tag... 创建tag。 或 顶部菜单栏 按照 VCS -> Git-> Tag... 创建tag。
推送远程分支
push的时候特别注意打勾即可
查看某个tag版本只需要切换版本即可
这时候IDEA就会切换代码了
对之前的代码提交版本打tag
四、拓展--实战分支与标签
以下是用代码来演示整个过程(还需大家仔细区分)
1.克隆远程库test1
git clone git@github.com:yanppp999/test1.git
2.依次创建dev/qas/pre分支(pro即master,已存在不用再创建),然后切换到dev分支
git branch dev
git branch test
git branch pre
#add(int a, int b){a+b+b} v1.0.0
#add(int a, int b, int c) v1.1.0
#add(int... arr) v1.2.0
3.创建并编辑Cal.java类,添加一个add(int a,int b)方法,三步曲:add->commit->push(*****)
git add Cal.java
git commit -m '项目一期完成'
git push origin dev
注1:在有分支情况下,push命令需要添加远程仓库名和分支名这两个参数
git push origin dev
注2:doc窗口切换到master,输入ls命令,Cal.java是找不到的,同理在github网站上,也要选择dev分支才能看到Cal.java文件
git branch master
ls
至此,项目一期工作完成,接下来进行测试阶段(会在dev-test两个分支间不断切换)
## 标签相关内容,在分支讲完之后,再重新添加进来
## 下面命令此步骤先跳过
## 创建并推送标签“dev-1.0.0”至远程
git checkout dev
git tag 1.0.0-alpha
git push origin 1.0.0-alpha
4.将dev合并到test,并提交
git checkout test
git merge dev
git push origin qas
5.测试结束之后,创建标签:qas-1.0.0
git tag qas-1.0.0
6.将qas合并到pre
git checkout pre
git merge qas
git tag pre-1.0.0
7.将pre合并到master
git checkout master
git merge pre
git tag prd-1.0.0
注1:实际生产中的APP或软件软件版本命名规范详解,详情可参考:资料/12,资料/13
v1.0.0.191202_be.d
v1.0.0.191210.t
v1.0.0.191221.rc
v1.0.0.191225.r
8. git clone指定branch或tag
1.取完整
git clone https://github.com/arvidn/libtorrent.git
2.使用指定branch
git checkout origin/dev
3.使用指定tag
git checkout 1.0.0-alpha
4.也可以在clone的时间指定tag或branch:
git clone -b RC_1_1 https://github.com/arvidn/libtorrent.git
git clone -b libtorrent-1_1_9 https://github.com/arvidn/libtorrent.git
到这里我的分享就结束了,欢迎到评论区探讨交流!!
💖如果觉得有用的话还请点个赞吧 💖