目录
一,分支
环境的的功能及特点
?分支的策略
分支的相关指令
二,标签
1.查看所有标签
2.创建tag?
??3.删除tag
4.分支与版本?
一,分支
1.分支的命名规范
????dev/test/pre/pro(即master)
2.分支的作用
????????创建了一个属于自己的分支,别人是看不到的,还继续在原来的分支上正常工作,而在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响其他人工作。
环境的的功能及特点
?四个环境分别是:dev、test、pre、pro(master),中文名字:开发环境、测试环境、灰度环境、生产环境
分析:
? ? ? ? ?dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。 ? ? ? ? ?test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定 ? ???????pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。 ? ???????pro(master)环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。
?分支的策略
?1.首先,pro分支(即master)应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
?2.那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,?再把dev分支合并到master上,在master分支发布1.0版本
? ?
?3.修复bug时,我们会通过创建新的bug分支(即test)进行修复,然后合并,最后删除;
? ?
?4.当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场
分支的相关指令
?1.查看分支,此命令会列出所有分支,当前分支前面会标一个*号 ? ? ?git branch ? ? ? ? ? //查看本地分支 ? ? ?git branch -a ? ? ? ?//查看远程分支
? ?
2.创建分支 ? ? ?git branch name ? ? ?//仅仅保存本地,远程还需要push ? ? ?git push <远程仓库名> <远程分支名>? ? ? ? ?
3.切换分支 ? ? ?git checkout name
? ?
4.创建+切换分支 ? ? ?git checkout -b name
? ?
5.合并某分支到当前分支 ? ? ?git merge name
? ? ?
?
注意:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 ? ? ? ? ? ?使用用git log --graph命令可以看到分支合并图。
?
6.删除分支(分本地和远程) ? ? ?git branch ? ? ? ? ? ? ? ? ? ? ?//查看本地分支 ? ? ?git branch -d name ? ? ? ? ? ? ?//删除本地分支
? ? ?git branch -a ? ? ? ? ? ? ? ? ?//查看远程分支 ? ? ?git push origin --delete dev ? //删除远程分支
?
?7.重命名本地分支,并提交到远程 ? ? ?(1).重命名? ? ? ? ?git branch -m oldBranchName newBranchName ? ? (2)删除远程分支 ? ? ? ?git push origin :oldBranchName ? ? (3)将重命名过的分支提交 ? ? ? ?git push origin newBranchName
? ? ? ? ? ? ?3.1.git branch -m 要改的本地分支名 修改后的分支名(修改本地分支) ? ? ? ? ? ? ?3.2.git push origin :远程修改前的分支名(删除远程分支) ? ? ? ? ? ? ?3.3.git push origin 修改后的分支名:修改后的分支名(push 到远程分支) ? ? ? ? ? ? ?3.4.git branch --set-upstream 修改后的分支名 origin/修改后的分支名(绑定远程分支)
效果展示
在仓库存放的文件中也就会出现在命令中执行的两个文件?
?
?
?进入指定文件(dev)
?在仓库中也能看到分支文件,此时的分支只有一个
?当执行?git push origin?(分支名? 将创建的分支提交到远程仓库中)?的命令时,分支文件就被提交过来了
?
?
二,标签
1.查看所有标签
git tag ? ? ?注1:标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息
2.创建tag?
1.首先,切换到需要打标签的分支上,例如:dev,再创建标签 ? ? ? ?git branch ? ? ? ?git checkout dev ? ? ? ?git tag 标签名
创建标签
?
2.推送标签到远程 ? ? ? ?git push origin 标签名 ? ? ? ?注1:因为创建的标签都只存储在本地,不会自动推送到远程,还需要手动推送
3.git标签分为两种类型:轻量标签和附注标签,区别:附注标签带注解 ? ? ? ?git tag 标签名 ? ? ? ? ? ? ? ? ? ? ? ? //创建轻量标签 ? ? ? ?git tag -a 标签名 "一期开发完成" ? ?//创建附注标签
? ? ? ?一般推荐打带附注信息的标签,这样可以最大限度查看标签版本的修改情况
??3.删除tag
1.删除本地tag
? ? ? ?git tag -d 标签名 ? ? ? ?
????????注1:因为创建的标签都只存储在本地,不会自动推送到远程。所以,标签可以在本地直接删除
? ? ?
2.删除远程tag ? ? ? ?1.如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除 ? ? ? ? ?git tag -d 标签名 ? ? ?
?????????2.然后,再从远程删除。删除命令也是push,但是格式如下: ? ? ? ? ?git push origin :refs/tags/标签名 ? ? ? ? GUI工具为:TortoiseGit 分3个部分:dev/test如何进行代码修复 ? ? ? ? ? dev->test->pre->pro的发布 ? ? ? ? ? ?产品升级重新发布?
4.分支与版本?
?dev/test/pre/pro(即master)
? ?
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
知识扩充
? ?5.将dev合并到test ? ? ?git checkout test ? ? ?git merge dev ? ? ?git push origin qas
?6.测试结束之后,创建标签:qas-1.0.0 ? ? ?git tag qas-1.0.0 ? ? ? ?
?7.将qas合并到pre ? ? ?git checkout pre ? ? ?git merge qas ? ? ?git tag pre-1.0.0
?8.将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
9. 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
|