git主要有四种协议:
-
本地协议(Local)
-
HTTP/HTTPS协议
-
SSH(Secure Shell)协议
-
git 协议
git关联远程仓库可以使用ssh协议或者http(s)协议。如下图:
git+ssh、git+http(s)有什么区别?
git+ssh
clone的项目你必须是管理员、开发者,且需要在clone前添加ssh Key。在fetch pull push的时候,不需要输入用户名;如果配置ssh key的时候设置了密码,则需要输入密码的。企业防火墙可能没有打开22端口。本地生成 SSH 密钥对再把公钥上传到服务器。不利于开源的项目。
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
- 端口:22
- 速度:快
- 不适合开源项目
- RSA协议: 非对称加密技术。目标主机(服务器)把RSA公钥发送给客户端,客户端用公钥加密一些东西之后传给服务器,服务器用RSA私钥从中解出一些东西,防篡改、防泄密,最终协商出只有双方才知道的通信密钥。
git+http(s)
fetch push pull 需要验证用户名和密码,适合非开发者clone项目,适合开源项目。
- 端口:80/443
- 速度:慢
- 适合开源项目
类型: Valid types are: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
gitflow
- 拿到需求,ticket id, 看ticket 类型,从dev(稳定分支) 新建以feat-* 或者是fix-*命名规则的分支
- 实现后,commit message按照jira的规范。然后push,创建MR,打上feature或者是fix的tag
- 创建MR后,通过jenkins部署到test(cnfo)环境。
- 测试通过后,确定上线范围,然后给MR打上Next release。然后可以review。
- 版本上线前,把所有NEXT release标签的MR,double check 看一下ticket 状态是否为done,然后合并到dev分支
- 合并后把dev合并到release分支,合并后通过CICD跑测试,打tag。(之前runner有问题,切换成人手打tag。)
- 移交运维部署上线