当前位置: 首页 > news >正文

技术干货分享:初识分布式版本控制系统Git

初识Git版本控制

自动化测试代码反复执行,如果借用持续集成工具会提高测试效率,那么需要我们把自动化测试代码发布到正式环境中,这时候用Git版本控制工具高效、稳定、便捷。

分布式版本控制

Git可以把代码仓库完整地镜像下来,有完整的历史记录,它可以与远端代码库进行交互。

简史

Git诞生于2005年,速度快,极适合管理大项目。

Git是什么

其他版本控制系统如SVN,是随时间变化的差异性文件比较,在某时间段某些文件进行更新。

Git是快照流,存储项目随时间改变的快照,几乎大部分操作都只需要访问本地文件和资源。保证完整性,用哈希Hash,一般只添加数据,不删除。

Git三种状态:

  • 已修改:在工作区修改文件,但没保存到数据库

  • 已暂存: 在暂存区对已修改的文件做标记,使其包含在下次提交的快照中

  • 已提交:在Git目录安全地保存数据到本地数据库

基本Git工作流程:

①工作区修改文件;

②暂存区将下次提交的更改选择性暂存,修改部分添加到暂存区;

③提交更新,找到暂存区的文件,将快照永久保存在Git目录。

命令行

所有人都有命令行工具,会命令行则应该会GUI。

安装Git

本次实践安装的最新版2.36.0,官网下载windows版本https://git-scm.com/download/win。

初次运行Git前的配置

1)设置用户信息,以下命令:

  1. git config --global user.name “”

  2. git config --global user.email “”

如果想给特定项目设置用户信息,则在该项目目录下运行无--global的命令。

2)设置文本编辑器,如未配置,Git会使用操作系统自带的编辑器。

设置notepad++为文本编辑器:

git config --global core.editor “’d:\dev\notepad++\notepad++.exe” -multiInst -notabbar -nosession -noPlugin”

3)检查配置信息:

git config --list

可逐项检查,如:

git config username

图片

获得帮助

git help +Verb,例如git help config。如果不用全面只需快速参考,使用命令git +Verb -h,例如git add -h。

Git基础

获取Git仓库

两种获得Git项目仓库的方式:

① 对尚未进行版本控制的本地目录转换为Git仓库;

② 从其他服务器克隆一个已存在的Git仓库。

(1)对已存在目录中初始化仓库

如果有一个尚未进行版本控制的项目目录,想要用Git控制它,那么需要进入该项目目录中。

在Windows上:

cd c/user/my_project

之后执行:

git init

该命令将创建名为.git的子目录,这个子目录含有你做初始化的Git仓库中所有的必须文件,这些文件是Git仓库的骨干。这时,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。

如图所示:

图片

图1

图片

图2

图片

图3

如果在一个已存在文件的文件夹(非空文件夹)中进行版本控制,应该开始追踪这些文件并进行初始提交。

可以通过git add命令指定所需的文件进行追踪,然后执行git commit:

  1. git add *.c

  2. git add LICENSE

  3. git commit -m ‘initial project version’

如图所示:

图片

图4

这样已经得到了一个存在被追踪文件与初始提交的Git仓库。

(2)克隆现有的仓库

如果想获得一份已经存在了的Git仓库的拷贝,比如说,想为某个开源项目贡献自己的一份力,这时就要用到git clone命令。

如果对其他VCS系统(比如Subversion)很熟悉,请留心以下所使用的命令是“clone”而不是“checkout”。这是Git区别于其他版本控制系统的一个重要特性,Git克隆的是该Git仓库服务器上的几乎所有数据,而不是仅仅复制完成你的工作所需要文件。

当你执行git clone命令的时候,默认配置下远程Git仓库中的每一个文件的每个版本都将被拉取下来。实际上,如果服务器磁盘坏掉了,通常可以使用任何一个克隆下来的用户端来重建服务器上的仓库(虽然可能会丢失某些服务器端的hook设置,但是所有版本的数据仍在)。

克隆仓库的命令是git clone。比如,要克隆Git的自建项目HTMLTestRunner,可以用下面的命令:

git clone https://github.com/mingming1205/HTMLTestRunner

这会在当前目录下创建一个名为“HTMLTestRunner”的目录,并在这个目录下初始化一个.git文件夹,从远程仓库拉取下所有数据放入.git文件夹,然后从中读取最新版本的文件的拷贝。

如果打开这个新建的HTMLTestRunner文件夹,会发现所有项目文件已经在里面了,准备就绪等待后续的开发和使用。

如下图:

图片

图5

图片

图6

如果想在克隆远程仓库的时候,自定义本地仓库的名字,可以通过额外的参数指定新的目录名:

git clone https://github.com/mingming1205/HTMLTestRunner myhtmltestrunner

这会执行与上一条命令相同的操作,但是目标目录名变成了myhtmltestrunner。

如下图:

图片

图7

图片

图8

Git支持多种数据传输协议。以上的例子使用的是https://协议,不过也可以使用git://协议或者使用 SSH 传输协议,例如user@server:path/to/repo.git。

至于所有这些协议在服务器端是如何配置使用,以及各种方式之间的利弊请查看“在服务器上搭建 Git”的介绍。

记录每次更新到仓库

执行命令:

git commit -m  “描述”

图片

查看提交历史

执行命令:

git log

图片

如果附带一系列总结的文字,执行命令:

git log --stat

图片

如果限制日志查看数量,执行命令git log -p -2,当退出log时,在冒号“:”后面敲q即可。

图片

以下表格引自官网:

图片

 

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 455787643,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

总结:感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关文章:

  • 大学专业选择的岔路口:计算机相关专业的前景与适配性
  • DBSCAN 算法【python,机器学习,算法】
  • Web前端职业描述:编织数字世界的绚丽画卷
  • 360数字安全:2024年4月勒索软件流行态势分析报告
  • MySQL常用命令(Linux环境)
  • 2024年,计算机相关专业还值得选择吗?
  • 如何实现观察者模式和发布-订阅模式?
  • 高压电工作业历年试题分享(含答案)
  • web鼠标前端设置:深入探索与个性化定制
  • 不是所有的硬盘柜都叫“安全专家”,但它做到了!
  • Lua - 魔兽世界SRP6网站源码(FastWeb)
  • Nginx05-负载均衡详解、LNMP+NFS、会话保持、负载均衡状态检查upstream-check、平滑升级
  • 大功率回馈式负载:行业竞争态势
  • 线性数据结构-栈
  • 【QEMU中文手册】2.2 调用方式(持续更新中)
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HashMap ConcurrentHashMap
  • JAVA SE 6 GC调优笔记
  • Joomla 2.x, 3.x useful code cheatsheet
  • leetcode讲解--894. All Possible Full Binary Trees
  • Making An Indicator With Pure CSS
  • MYSQL 的 IF 函数
  • Mysql优化
  • Netty 4.1 源代码学习:线程模型
  • Wamp集成环境 添加PHP的新版本
  • 包装类对象
  • 官方解决所有 npm 全局安装权限问题
  • 那些年我们用过的显示性能指标
  • 驱动程序原理
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 函数计算新功能-----支持C#函数
  • ​【已解决】npm install​卡主不动的情况
  • ###C语言程序设计-----C语言学习(3)#
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #mysql 8.0 踩坑日记
  • #nginx配置案例
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (02)vite环境变量配置
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (八)Flask之app.route装饰器函数的参数
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)项目管理杂谈-我所期望的新人
  • (转)原始图像数据和PDF中的图像数据
  • **CentOS7安装Maven**
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .chm格式文件如何阅读
  • .CSS-hover 的解释
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)