git

295 阅读2分钟

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

  1. 拿到需求,ticket id, 看ticket 类型,从dev(稳定分支) 新建以feat-* 或者是fix-*命名规则的分支
  2. 实现后,commit message按照jira的规范。然后push,创建MR,打上feature或者是fix的tag
  3. 创建MR后,通过jenkins部署到test(cnfo)环境。
  4. 测试通过后,确定上线范围,然后给MR打上Next release。然后可以review。
  5. 版本上线前,把所有NEXT release标签的MR,double check 看一下ticket 状态是否为done,然后合并到dev分支
  6. 合并后把dev合并到release分支,合并后通过CICD跑测试,打tag。(之前runner有问题,切换成人手打tag。)
  7. 移交运维部署上线