五、Git标签
定义
Git可以给历史中的某一个提交打上标签,以示重要,标签指的是某个分支某个特定时间点的状态,通过标签,可以很方便的切换到标记时的状态
标签与分支的区别
标签和分支的区别分支会随着Commit而移动,但是标签不会,当进入一个Commit时,它所在的分支会跟随着向前移动,而标签一旦贴上就不管Commit怎么前进,标签都会留在原来的那个位置上
注:两者在被删除的时候,都不会影响到被指到的那个对象
Git中的标签主要解决做标记的问题
标签的基本操作
1.列出已有标签
#列出已有标签
$ git tag
2.创建标签
#创建标签
$ git tag v1.0
3.查看标签信息
#查看标签信息
$ git show v1.0
4.标签推送远程仓库
#先查看远程仓库名
$ git remote
#远程推送标签
$ git push 仓库名 标签名
检出与删除标签
1.检出标签
新建一个分支,指向某个tag
#新建一个test分支版本v1.0
$ git checkout -b test v1.0
2.删除标签
- 删除本地标签
#删除本地分支
$ git tag -d v1.0
- 删除远程标签
#删除远程分支
$ git push 仓库名 :refs/tags/标签名
#例如:
$ git push FirstProject :refs/tags/v1.0
六、Git工作流
Git Flow是什么
定义:在使用Git的过程中如果没有清晰的流程和规划,每个人都提交Commit,项目就变的很难协调和维护,Git Flow 工作流通过为功能开发、发布准备和维护分配独立的分支,让发布迭代过程更流程,(Git Flow 是Git进行代码管理的行为规范)
Git Flow的常用分支
- master 主干分支,开发完成的上线的项目版本
- hotixes 热部署分支,进行主干分支的补丁操作
- release 预部署分支,测试工程师的调用分支
- develop 开发分支,开发源代码分支
- feature 功能分支,你们调用的分支
Master/Devlop分支
所有的Master分支上的Commit应该打上Tag,一般情况下Mater不存在Commit,Devlop分支基于Master分支创建
Feature分支
Feature分支做完后,必须合并回Develop分支,合并完分支之后一般会删除这个Feature分支,但是我们也可以保留
Release分支
Release分支基于Develop分支创建,打完Release分支后,我们可以在这个Release分支上测试,修改bug,同时,其他开发人员可以基于新的Feature发布Release分支时,合并Release到Master和Develop,同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了
注:一旦打了Release分支之后不要从Develop分支上合并新的改动到Release分支
Hotfix分支
Hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag
测试
#创建 Devlop
git branch develop
git push -u 仓库名 develop
#开始 Feature
# 通过develop新建张三 , 里斯 feaeure分支
git checkout -b feature_lisi develop
git checkout -b feature_zhangsan develop
# 或者, 推送至远程服务器:
git push -u 仓库名 feature_lisi
git push -u 仓库名 feature_zhangsan
张三李四进行项目开发
git status
git add .
git commit -m "完成登录模块"
复制
##完成 Feature
git push 仓库名 feature_lisi
git push 仓库名 feature_zhangsan
git checkout develop
##开始 Release
git checkout -b release-0.1.0 develop
##完成 Release
git checkout master
git merge --no-ff release-0.1.0
git push
##打上标签
git tag v0.1.0
git push 仓库名 v0.1.0
##开始 Hotfix
git checkout -b hotfix-0.1.1 master
#完成 Hotfix
git checkout master
git merge --no-ff hotfix-0.1.1
git push
#打标签
git tag v0.1.1
git push origin v0.1.1