【软件测试】Git 详细实战-打标签,一篇通关...

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

Git 打标签
一般会给提交历史打个标签,方便后续进行筛选、查看

列出标签

可带上可选的 -l 选项 --list

$ git tag
v1.0
v2.0

这个命令以字母顺序列出标签

可以按照特定的模式查找标签:
例如,Git 代码仓库包含标签的数量超过 500 个,只想查 v1.8.5 相关的内容

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5

标签的分类

Git 支持两种标签:
轻量标签(lightweight);
附注标签(annotated);

轻量标签:
很像一个不会改变的分支,它只是某个特定提交的引用

附注标签:
是存储在 Git 数据库中的一个完整对象,它们是可以被校验的;
其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证;
通常会建议创建附注标签,这样可以拥有以上所有信息;
但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签;

附注标签相关命令

创建附注标签
在运行 tag 命令时指定 -a 选项

$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4

-m 选项指定了一条将会存储在标签中的信息,如果不加,就会要求你手动输入

A1

查看标签信息和提交信息
通过使用 git show 命令可以看到标签信息和与之对应的提交信息

$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date:   Sat May 3 20:19:12 2014 -0700my version 1.4commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700changed the version number

输出显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息

轻量标签相关命令

本质上是将提交校验和(SHA,那串很长的乱码)存储到一个文件中,没有保存任何其他信息

创建轻量标签
不需要使用 -a、-s 或 -m 选项,只需要提供标签名字

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

这时,如果在标签上运行 git show,你不会看到额外的标签信息。 命令只会显示出提交信息

$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700changed the version number

后期打标签
也可以对提交历史打标签

实际例子
假设提交历史是这样的

$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme

现在,假设在 v1.2 时你忘记给项目打标签,也就是在 “updated rakefile” 的提交历史

补打标签
你可以在之后补上标签。 要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和)

git tag -a v1.2 9fceb02

查看补打标签的信息

$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5$ git show v1.2
tag v1.2
Tagger: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Feb 9 15:32:16 2009 -0800version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <mchacon@gee-mail.com>
Date:   Sun Apr 27 20:43:35 2008 -0700updated rakefile
...

共享标签

默认情况下,git push 命令并不会传送标签到远程仓库服务器上
在创建完标签后你必须显式地推送标签到远程仓库上

推送标签的语法格式

git push <remote> <tagname>

实际例子:

polo@B-J5D1MD6R-2312 watermarker % git push origin2 1.11枚举对象中: 17,完成。
对象计数中: 100% (17/17),完成。
使用 12 个线程进行压缩
压缩对象中: 100% (12/12),完成。
写入对象中: 100% (14/14),1.47 KiB | 1.47 MiB/s,完成。
总共 14(差异 6),复用 0(差异 0),包复用 0remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:poloyy/watermarker.git* [new tag]         1.11 -> 1.11

一次性推送过个标签
如果想要一次性推送很多标签,也可以使用带有 --tags 选项的 git push 命令。 这将会把所有不在远程仓库服务器上的标签全部传送到那里。

git push origin2 --tags
枚举对象中: 6, 完成.
对象计数中: 100% (6/6), 完成.
使用 12 个线程进行压缩
压缩对象中: 100% (4/4), 完成.
写入对象中: 100% (5/5), 452 字节 | 452.00 KiB/s, 完成.
总共 5(差异 2),复用 0(差异 0),包复用 0
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:poloyy/watermarker.git* [new tag]         1.2 -> 1.2* [new tag]         1.3 -> 1.3

现在,当其他人从仓库中克隆或拉取,他们也能得到这些标签

删除标签

删除掉本地仓库上的标签,加个 -d 就行

polo@B-J5D1MD6R-2312 watermarker % git tag
1.11
1.2
1.3
testbu
v1.1
polo@B-J5D1MD6R-2312 watermarker % git tag -d 1.11
已删除标签 '1.11'(曾为 9baca61)
polo@B-J5D1MD6R-2312 watermarker % git tag -d 1.2
已删除标签 '1.2'(曾为 e4da7ac)
polo@B-J5D1MD6R-2312 watermarker % git tag -d 1.3
已删除标签 '1.3'(曾为 bf12eaa)
polo@B-J5D1MD6R-2312 watermarker % git tag
testbu
v1.1

-d 删除标签并不会从任何远程仓库中删除这个标签

删除远程仓库的标签

第一种,–delete

$ git push origin --delete <tagname>

简单粗暴的方式

例子:

polo@B-J5D1MD6R-2312 watermarker % git push origin2 --delete 1.2
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:poloyy/watermarker.git- [deleted]         1.2
polo@B-J5D1MD6R-2312 watermarker % git push origin2 --delete 1.3
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:poloyy/watermarker.git- [deleted]         1.3

第二种 ,传空值

git push <remote> :refs/tags/<tagname> 

将冒号前面的空值推送到远程标签名,从而高效地删除它

例子:

polo@B-J5D1MD6R-2312 watermarker % git push origin2 :refs/tags/1.11
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:poloyy/watermarker.git- [deleted]         1.11

checkout 标签

如果想查看某个标签所指向的文件版本,可以使用 git checkout 命令
但仓库处于“分离头指针(detached HEAD)”的状态,会有些小问题存在

polo@B-J5D1MD6R-2312 watermarker % git status
头指针分离于 testbu
无文件要提交,干净的工作区

checkout 的例子:

polo@B-J5D1MD6R-2312 watermarker % git checkout testbu
注意:正在切换到 'testbu'。您正处于分离头指针状态。您可以查看、做试验性的修改及提交,并且您可以在切换
回一个分支时,丢弃在此状态下所做的提交而不对分支造成影响。
如果您想要通过创建分支来保留在此状态下所做的提交,您可以通过在 switch 命令
中添加参数 -c 来实现(现在或稍后)。
例如:
git switch -c <新分支名>或者撤销此操作:
git switch -通过将配置变量 advice.detachedHead 设置为 false 来关闭此建议
HEAD 目前位于 7fa175d test

查看当前所处分支

polo@B-J5D1MD6R-2312 watermarker % git branch
* (头指针在 1.2 分离)master

能看到执行 git checkout 之后,本地分支会自动切换到头指针分支

重点:
在“分离头指针”状态下,如果做了某些更改然后提交它们,标签不会发生变化
但新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希才能访问,看下面的实际例子

polo@B-J5D1MD6R-2312 watermarker % git push
fatal: 您当前不在一个分支上。
现在为推送当前(分离头指针)的历史,使用git push origin HEAD:<远程分支名字> 

需要指定远程分支的哈希(就是那串很长的乱码字符串)

因此,如果你需要进行更改,比如你要修复旧版本中的错误,那么通常需要创建一个新分支

polo@B-J5D1MD6R-2312 watermarker % git checkout -b newtest3 1.2
切换到一个新分支 'newtest3'
polo@B-J5D1MD6R-2312 watermarker % git branchmasternewtest2
* newtest3
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一次的努力都是你成长的痕迹,坚持不懈的奋斗才能让你的人生绽放更美的花朵。相信自己的才华,勇往直前,只有不断进取,才能到达心中的彼岸。

只要坚持努力,没有什么是无法实现的。不管困难多大,只要心中有梦想,就会拥有无限的力量。相信自己,勇往直前,你一定能够创造属于自己的辉煌!

只有拼尽全力,才能让梦想腾飞;只有勇往直前,才能开创辉煌。无论困难多大,坚持不懈,迈向成功的路上,你将绽放出最耀眼的光芒!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dede编辑器修改成纯文本编辑器的方法

我在做优秀啦网站大全的时候需要的正文内容都不需要设置什么文字样式&#xff0c;所以我需要把编辑器上的工具全部取消掉&#xff0c;包括会员投稿中的编辑器工具栏全部取消掉或者屏蔽隐藏掉&#xff0c;所以我需要把DEDE编辑器修改成纯文本编辑器的方法如下&#xff1a;如图&a…

防范 XSS 攻击的措施

防范 XSS 攻击的措施 XSS&#xff08;Cross-site scripting&#xff09;攻击是一种常见的网络安全漏洞&#xff0c;它可以通过注入恶意代码来攻击用户的计算机和浏览器&#xff0c;从而窃取用户的敏感信息或执行恶意操作。本篇文章将介绍防范 XSS 攻击的措施&#xff0c;并提供…

【深度学习论文阅读】四大分类网络之AlexNet

ImageNet Classification with Deep Convolution Nerual Networks 论文原文&#xff1a;ImageNet Classification with Deep Convolutional Neural Networks 1 引言 解决的问题&#xff1a; 提高效率&#xff08;GPU训练&#xff09;&#xff0c;防止过拟合&#xff08;drop…

基于Java的考研教室在线预约系统/基于springboot的考研教室在线预约系统

摘 要 网络的广泛应用给生活带来了十分的便利。所以把考研教室在线预约与现在网络相结合&#xff0c;利用java语言建设考研教室在线预约系统&#xff0c;实现考研教室在线预约的信息化。则对于进一步提高考研教室在线预约发展&#xff0c;丰富考研教室在线预约能起到不少的促进…

语义分割混淆矩阵、 mIoU、mPA计算

一、操作 #vx:桔子code / juzicode.com import cv2 img_gray cv2.imread("nezha.jpg",cv2.IMREAD_GRAYSCALE) for i in range(22):dst cv2.applyColorMap(img_gray,i) cv2.imshow(map,dst) cv2.waitKey(500)cv2.imwrite("map-"str(i)".jpg",…

5G全网通工业三防平板Windows移动电脑

当今科技领域的快速发展为我们的生活带来了许多便利和高效性能。在这个数字化时代&#xff0c;移动设备已成为我们生活的重要组成部分。在这一领域&#xff0c;搭载全新第12代英特尔酷睿Mi5-1235U/i7-1255U处理器的工业三防平板Windows移动电脑无疑是一款引人注目的产品。 这款…

无法找到docker.sock

os环境&#xff1a;麒麟v10(申威) 问题描述&#xff1a; systemctl start docker 然后无法使用docker [rootnode2 ~]# systemctl restart docker [rootnode2 ~]# docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon r…

vue3使用下载附件功能

效果&#xff1a; 点击即可以下载打开。 代码&#xff1a; <div v-show"item.attachment.length > 0"><h3>下载附件</h3><divv-for"(doc, docIndex) in item.attachment":key"docIndex"><astyle"color: #41…

技术架构的演进-八大架构

目录&#xff1a; 常见概念评价指标单机架构应用数据分离架构应用服务集群架构读写分离 / 主从分离架构引入缓存 —— 冷热分离架构垂直分库业务拆分 —— 微服务容器化引入——容器编排架构总结 1.常见概念&#xff1a; 应用&#xff08;Application&#xff09; / 系统&am…

栈的压入、弹出序列

链接: 栈的压入、弹出序列 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** * param pushV int整型vector * param popV int整型vector * return bool布尔型*/bool IsPopOrder(vector<int…

zeppelin的hive使用

zeppelin的hive使用 配置项 default.driver org.apache.hive.jdbc.HiveDriver default.url jdbc:hive2://192.168.xxx.xxx:10000 default.user hiveHive使用&#xff1a;点击create new note Default Interpreter选择hive

生命周期函数和wxs脚本

生命周期函数和wxs脚本 1. 生命周期函数1.1. 应用的生命周期函数1.2. 页面的生命周期函数 2. wxs脚本2.1. wxs与JavaScript的关系2.2. wxs内嵌脚本2.3. wxs外联脚本2.4. tips 1. 生命周期函数 1.1. 应用的生命周期函数 应用的生命周期函数&#xff1a;指小程序从启动 -> 运…

TCP编程流程和粘包

目录 1、TCP编程流程 2、粘包 1、TCP编程流程 socket() 是创建套接字&#xff0c;返回值为监听套接字描述符&#xff0c;有了套接字才能通过网络进行数据的传输。创建套接字的参数要指定服务类型&#xff0c;TCP协议使用的是流式服务&#xff08;SOCK_STREAM&#xff09;。 b…

数据库系统 - 家庭教育平台设计开发

目录 1.绪论 1.1项目背景 1.2家庭教育平台的发展现状与优势 1.2.1国内外发展现状 1.2.2家庭教育平台的优势 2.需求分析 2.1可行性分析 2.1.1经济可行性 2.1.2 技术可行性 2.1.3操作可行性 2.2系统功能 2.2.1 家庭教育资源 2.2.2 家庭教育指导师 2.2.3家庭教育咨询…

BUG解决Button类不能从UnityEngine.UI中引用

Button does not contain a definition for onClick and no accessible extension method onClick accepting a first argument of type Button could be found (are you missing a using directive or an assembly reference?) 一个非常奇葩的问题;突然!!!!! using UnityEn…

redis如何实现持久化

RDB快照 RDB是一种快照存储持久化方式&#xff0c;具体就是将Redis某一时刻的内存数据保存到硬盘的文件当中&#xff0c;默认保存的文件名为dump.rdb&#xff0c;而在Redis服务器启动时&#xff0c;会重新加载dump.rdb文件的数据到内存当中恢复数据。 开启RDB持久化方式 开启…

AWS MSK集群认证和加密传输的属性与配置

通常&#xff0c;身份认证和加密传输是两项不相关的安全配置&#xff0c;在Kafka/MSK上&#xff0c;身份认证和加密传输是有一些耦合关系的&#xff0c;重点是&#xff1a;对于MSK来说&#xff0c;当启用IAM, SASL/SCRAM以及TLS三种认证方式时&#xff0c;TLS加密传输是必须的&…

Ubuntu开机自启动设置

一、创建执行脚本 这里有两个程序所以编写了两个脚本&#xff0c;第一脚本(master.sh)&#xff1a; gnome-terminal -- bash -c "source /home/zyy/anaconda3/bin/activate wood2;cd /home/zyy/pycharmProject/master_program;python main.py > /home/zyy/pycharmProj…

用于语义图像分割的弱监督和半监督学习:弱监督期望最大化方法

这时一篇2015年的论文&#xff0c;但是他却是最早提出在语义分割中使用弱监督和半监督的方法&#xff0c;SAM的火爆证明了弱监督和半监督的学习方法也可以用在分割上。 这篇论文只有图像级标签或边界框标签作为弱/半监督学习的输入。使用期望最大化(EM)方法&#xff0c;用于弱…

JavaScript--修改 HTML 元素

这些是一些用于修改 HTML 元素的常见方法&#xff1a; 1、document.createElement(element)&#xff1a;创建 HTML 元素节点。可以使用这个方法创建一个新的 HTML 元素&#xff0c; 例如 document.createElement(div) 将创建一个 <div> 元素节点。 2、document.createA…