实验八 版本控制
实验八 版本控制
一、实验目的
掌握Git基本命令的使用。
二、实验内容
1.理解版本控制工具的意义。
2.安装Windows和Linux下的git工具。
3.利用git bash结合常用Linux命令管理文件和目录。
4.利用git创建本地仓库并进行简单的版本控制实验。
三、主要实验步骤
1.下载并安装合适的git版本。https://git-scm.com/(注意:已安装或配置完可忽略本步骤或下边相关步骤,教程可参考https://gitee.com/all-about-git)
一、实验准备:安装 Git(Ubuntu 已预装,可跳过)
检查 Git 是否安装
打开终端(Ctrl+Alt+T),输入:bashgit --version
如果输出类似 git version 2.34.1,说明已安装,直接进入下一步;否则继续安装。
二、实验步骤 3:配置 Git & 初始化仓库
设置用户名和邮箱
bashgit config --global user.name "李海宁" # 你的姓名git config --global user.email "202214060153@xxx.com" # 你的邮箱
检查配置:bashcat ~/.gitconfig # 查看全局配置
检查配置:
bash
cat ~/.gitconfig # 查看全局配置
创建工作目录并初始化仓库
bash
mkdir ~/zhangsangit # 创建目录
cd ~/zhangsangit # 进入目录
git init # 初始化本地仓库
此时目录下会生成隐藏的 .git 文件夹(用 ls -a 查看)。
三、实验步骤 4:创建文件 & 提交入库
创建 4 个文件touch zs1 zs2 zs3 zs4 # 创建4个空白文件
编写 zs1 脚本(倒序输出参数)
用文本编辑器打开 zs1:
nano zs1 # 或用vim等编辑器
输入以下内容(保存后按 Ctrl+O,回车,Ctrl+X 退出):
bash
#!/bin/bash
echo "倒序参数:$(echo "$" | tr ' ' '\n' | tac | tr '\n' ' ')"赋予执行权限:
bash
chmod +x zs1忽略 zs4 文件
创建 .gitignore 文件并添加内容:
bash
echo "zs4" > .gitignore # 直接写入忽略名单提交到仓库
bash
git add . # 添加所有文件(zs4会被忽略)
git commit -m "首次提交:创建zs1、zs2、zs3,忽略zs4" # 提交并备
四、实验步骤 5:修改文件 & 再次提交
修改 zs1:添加输出当前时间
编辑 zs1,在末尾添加:
bash
echo “当前时间:$(date)”
保存后提交:
bash
git add zs1 # 只添加修改的文件
git commit -m “修改zs1:增加输出当前时间”
修改 zs3:写入当前日期到文件
bash
echo “当前日期:$(date)” > zs3 # 重定向日期到zs3
git add zs3
git commit -m “修改zs3:写入当前日期”
五、实验步骤 6:删除 zs3 & 写入 zs2
删除 zs3 文件
bash
rm zs3 # 删除文件
git rm zs3 # 告诉Git删除该文件(加入暂存区)
写入当前日期到 zs2
bash
echo “当前日期:$(date)” > zs2 # 重定向到zs2
git add zs2
git commit -m “删除zs3,写入日期到zs2”
六、实验步骤 7:恢复 zs3 并改名
恢复 zs3(从历史版本)
先查看历史提交(找到删除 zs3 前的提交 ID):
bash
git log # 记录,例如 abc123
git checkout abc123 – zs3 # 从历史版本恢复zs3
复制恢复的 zs3 并改名:
bash
cp zs3 zsapple # 复制为zsapple
git add zsapple # 添加新文件
git commit -m “恢复zs3并改名zsapple”
七、实验步骤 8:创建分支 & 修改文件
创建分支并切换
bash
git branch zhangsanbranch # 创建分支
git checkout zhangsanbranch # 切换到新分支
或用简写:git switch -c zhangsanbranch
修改 zs2:追加系统版本信息
bash
echo “系统版本:$(lsb_release -a)” >> zs2 # 追加内容到zs2
git add zs2
git commit -m “分支修改:追加系统版本到zs2”
八、实验步骤 9:合并分支到主分支
切换回主分支(默认是 main 或 master)
bash
git checkout main # 或git switch main
合并分支
bash
git merge zhangsanbranch # 合并分支
如果无冲突,直接完成;若有冲突(后续作业五会用到),按提示解决(见下方作业五示例)。
四、思考题
集中式和分布式版本控制系统有什么区别?各有哪些代表性的工具。
四、思考题
集中式和分布式版本控制系统的区别:
-
数据存储方式
- 集中式:所有版本数据存储在中央服务器(如SVN的Repository),本地仅保存工作副本,不保存完整历史记录。
- 分布式:每个用户本地都有完整的版本库(包括所有提交历史和元数据),无需依赖中央服务器即可进行提交、分支等操作。
-
离线操作能力
- 集中式:必须联网连接中央服务器才能提交代码、获取更新,离线时只能进行本地修改,无法提交或同步。
- 分布式:支持离线操作,所有操作(如提交、分支、合并)均可在本地完成,联网后再与远程仓库同步。
-
分支与协作
- 集中式:分支创建和管理依赖中央服务器,成本较高,协作时容易出现分支冲突,且权限控制较严格(需服务器端配置)。
- 分布式:分支创建轻量(仅本地文件操作),支持并行开发,协作时通过分支合并解决冲突,灵活性更高。
-
容灾与安全性
- 集中式:中央服务器是单点故障,若服务器损坏或数据丢失,可能导致所有历史记录丢失。
- 分布式:每个节点都有完整备份,即使中央仓库损坏,也可从任意一个本地仓库恢复数据,安全性更高。
-
依赖关系
- 集中式:高度依赖中央服务器,网络延迟会影响操作效率。
- 分布式:本地操作优先,网络仅用于同步,对网络环境要求较低。
代表性工具:
-
集中式版本控制系统
- SVN(Subversion):开源、广泛用于企业项目,支持版本控制、事务性提交,但分支管理较繁琐。
- CVS(Concurrent Versions System):早期流行的集中式工具,功能较基础,现已逐渐被SVN取代。
- Perforce(P4):商业软件,适合大型团队和二进制文件管理,权限控制严格。
-
分布式版本控制系统
- Git:开源、目前最流行,支持高效的分支管理、分布式协作,广泛用于GitHub、GitLab、Gitee等平台。
- Mercurial:开源、轻量,语法简洁,适合个人或小型团队,代表项目如Python官方仓库。
- Bazaar:开源、支持分布式和集中式模式,用户友好,曾用于Ubuntu系统开发。
总结
集中式系统适合对权限控制严格、网络环境稳定的场景,而分布式系统因其离线能力、高可靠性和灵活的分支管理,成为现代软件开发的主流选择(如Git占据绝对主导地位)。
————————————————
作业五
Git当中开启分支后,修改了某文件aa,与此同时主分支也修改了某文件aa,设计实验如何处理这种冲突,最终实现分支的合并。
作业五:处理分支冲突(实验设计)
场景:
主分支(main)和分支(dev)同时修改了文件 aa,需要合并时解决冲突。
步骤:
创建测试文件并提交
bash
echo "初始内容" > aa # 创建aa文件
git add aa && git commit -m "添加aa文件"创建分支并修改 aa
bash
git branch dev && git checkout dev # 新建dev分支
echo "分支修改:添加一行" >> aa # 修改aa
git commit -a -m "dev分支修改aa"
主分支同时修改 aa
bash
git checkout main # 切回主分支
echo “主分支修改:删除一行” >> aa # 修改aa(与分支冲突)
git commit -a -m “main分支修改aa”
合并分支,触发冲突
bash
git merge dev # 合并时会提示冲突解决冲突
打开 aa 文件,会看到冲突标记:
plaintext
<<<<<<< HEAD
主分支修改:删除一行
=======
分支修改:添加一行
>>>>>>> dev
删除冲突标记,保留正确内容(例如合并两行),保存后:
bash
git add aa # 标记冲突已解决
git commit -m “解决aa文件冲突” # 提交合并结果
相关文章:
实验八 版本控制
实验八 版本控制 一、实验目的 掌握Git基本命令的使用。 二、实验内容 1.理解版本控制工具的意义。 2.安装Windows和Linux下的git工具。 3.利用git bash结合常用Linux命令管理文件和目录。 4.利用git创建本地仓库并进行简单的版本控制实验。 三、主要实验步骤 1.下载并安…...
《马尼拉》桌游期望计算器
《马尼拉》桌游期望计算器:做出最明智的决策 注:本项目仍在开发验证中,计算结果可能不够准确,欢迎游戏爱好者提供协助! 在线使用 | GitHub 项目简介 马尼拉期望计算器是一个基于 Vue 3 Vite 开发的网页应用ÿ…...
VLAN间通讯技术
多臂路由 路由器使用多条物理线路,每条物理线路充当一个 VLAN 的网管 注意:路由器对端的交换机接口,需要设定 Access 类型,因为路由器的物理接口无法处理 VLAN 标签 。 单臂路由 使用 以太网子接口 (sub-interface) 实现。 …...
linux基础学习--linux文件与目录管理
linux文件与目录管理 1. 目录与路径 1.1 相对路径与绝对路径 绝对路径:路径写法一定从根目录/写起。 绝对路径的正确度要高。 相对路径:路径写法不是由/写起。 1.2 目录的相关操作 切换目录的命令是cd,下面是比较特殊的目录:…...
云原生--基础篇-2--云计算概述(云计算是云原生的基础,IaaS、PaaS和SaaS服务模型)
1、云计算概念 云计算是一种通过互联网提供计算资源(包括服务器、存储、数据库、网络、软件等)和服务的技术模式。用户无需拥有和维护物理硬件,而是可以根据需要租用这些资源,并按使用量付费。 2、云计算特点 (1&am…...
存储器综合:内存条
一、RW 1000题刷题 1、计算Cache缺失率 2、 二、前提回顾 1、CPU从单个DRAM芯片中取地址 注意:Cache与主存的交互以“主存块”为单位,当出现Cache Miss时,主存以“主存块”为单位传输至Cache中。 2、内存条编址 多个DRAM芯片组成内存条&a…...
树莓派超全系列教程文档--(38)config.txt视频配置
config.txt视频配置 视频选项HDMI模式树莓派4-系列的HDMI树莓派5-系列的HDMI 复合视频模式enable_tvout LCD显示器和触摸屏ignore_lcddisable_touchscreen 通用显示选项disable_fw_kms_setup 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 视频选…...
pytest-项目结构
项目结构 api_test_project/ ├── config/ │ └── config.py # 配置文件,存储接口的基本信息,如 URL、请求头、认证信息等 ├── data/ │ └── test_data.json # 测试数据文件,存储接口的请求参数、预期结果等 ├── tests/…...
几何编码:启用矢量模式地理空间机器学习
在 ML 模型中使用点、线和多边形,将它们编码为捕捉其空间属性的向量。 自地理信息系统 (GIS) 诞生之初,“栅格模式”和“矢量模式”之间就存在着显著的区别。在栅格模式下,数据以值的形式呈现在规则的网格上。这包括任何形式的图像࿰…...
什么是SPA,SPA与MAP区别
什么是SPA,SPA与MAP区别 文章目录 什么是SPA,SPA与MAP区别一、什么是SPA二、SPA和MPA的区别一、单页应用与多页应用的区别**二、SPA 的优缺点对比**三、WPA的优缺点 **三、SPA 实现关键技术**hash 模式模式history模式 四、SPA 的适用场景与原因**适用场…...
计算机前沿技术课程论文 K-means算法在图像处理的应用
K-means算法在图像处理的应用 这是本人在计算机前沿技术课程中的课程论文文章,为了方便大家参考学习,我把完整的论文word文档发到了我的资源里,有需要的可以自取。 点击完整资源链接 目录 K-means算法在图像处理的应用摘要:引言1…...
第十四届蓝桥杯 2023 C/C++组 平方差
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 第一种思路: 第二种思路: 坑点: 代码: 数学找规律 O(n) 50分代码详解: O(1)满分代码详解&#x…...
【数学建模】随机森林算法详解:原理、优缺点及应用
随机森林算法详解:原理、优缺点及应用 文章目录 随机森林算法详解:原理、优缺点及应用引言随机森林的基本原理随机森林算法步骤随机森林的优点随机森林的缺点随机森林的应用场景Python实现示例超参数调优结论参考文献 引言 随机森林是机器学习领域中一种…...
计算机组成与体系结构:存储器(Memory)
目录 📁 当你打开一个文件,计算机会做什么? ⚡ 越大的 memory,访问速度越快吗? 🧠 那么,我们是怎么设计存储器的呢? Primary Memory(主存)登场ÿ…...
MyBatis框架—xml映射
目录 一.为什么需要进行手动映射? 二.关联查询 1.使用resultMap进行映射 2.使用Connection进行映射 一.为什么需要进行手动映射? 当我们设计多表查询或关联查询时,表中含有相同的字段名或要进行关联查询时,MyBatis无法智能识别如何处理映射结果&…...
Vue接口平台学习十——接口用例页面2
效果图及简单说明 左边选择用例,右侧就显示该用例的详细信息。 使用el-collapse折叠组件,将请求到的用例详情数据展示到页面中。 所有数据内容,绑定到caseData中 // 页面绑定的用例编辑数据 const caseData reactive({title: "",…...
Visual Studio 2022 运行一个后台程序而不显示控制台窗口
在 Visual Studio 2022 中,希望运行一个后台程序而不显示控制台窗口(黑色命令框),可以通过以下方法实现: 修改项目输出类型为 Windows 应用程序 右键项目 → 选择 属性 (Properties)在 配置属性 → 链接器 → 系统 (…...
剑指Offer(数据结构与算法面试题精讲)C++版——day17
剑指Offer(数据结构与算法面试题精讲)C版——day17 题目一:节点值之和最大的路径题目二:展平二叉搜索树题目三:二叉搜索树的下一个节点附录:源码gitee仓库 题目一:节点值之和最大的路径 题目&am…...
opencv函数展示4
一、形态学操作函数 1.基本形态学操作 (1)cv2.getStructuringElement() (2)cv2.erode() (3)cv2.dilate() 2.高级形态学操作 (1)cv2.morphologyEx() 二、直方图处理函数 1.直方图…...
10天学会嵌入式技术之51单片机-day-3
第九章 独立按键 按键的作用相当于一个开关,按下时接通(或断开),松开后断开(或接通)。实物图、原理图、封装 9.2 需求描述 通过 SW1、SW2、SW3、SW4 四个独立按键分别控制 LED1、LED2、LED3、LED4 的亮…...
DeepSeek智能时空数据分析(二):3秒对话式搞定“等时圈”绘制
序言:时空数据分析很有用,但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要,然而,三大挑战仍制约其发展:技术门槛高,需融合GIS理论、SQL开发与时空数据库等多领域知识;空…...
第 7 篇:总结与展望 - 时间序列学习的下一步
第 7 篇:总结与展望 - 时间序列学习的下一步 (图片来源: Guillaume Hankenne on Pexels) 恭喜你!如果你一路跟随这个系列走到了这里,那么你已经成功地完成了时间序列分析的入门之旅。我们从零开始,一起探索了时间数据的基本概念、…...
计算机视觉中的正则化:从理论到实践的全面解析
🌟 计算机视觉中的正则化:从理论到实践的全面解析🌟 大家好!今天要和大家分享的是在计算机视觉(CV)领域中非常重要的一个概念——正则化(Regularization)。无论你是刚开始接触深度学…...
解决使用hc595驱动LED数码管亮度低的问题
不知道大家在做项目的时候有没有遇到使用hc595驱动LED数码管亮度低的问题(数码管位数较多),如果大佬们有好的方法的可以评论区留言 当时我们解决是换成了天微的驱动芯片,现在还在寻找新的解决办法(主要软件不花钱&…...
Allegro23.1新功能之4K显示器页面显示不全如何解决操作指导
Allegro23.1新功能之4K显示器页面显示不全如何解决操作指导 Allegro升级到了23.1的时候,可能会出现界面显示不全的情况,如下图 是因为4K高清显示器的原因导致的 如何解决,具体操作如下 我的电脑,右键选择属性 点击高级系统设置 …...
C++——STL——容器deque(简单介绍),适配器——stack,queue,priority_queue
目录 1.deque(简单介绍) 1.1 deque介绍: 1.2 deque迭代器底层 1.2.1 那么比如说用迭代器实现元素的遍历,是如何实现的呢? 1.2.2 头插 1.2.3 尾插 1.2.4 实现 编辑 1.2.5 总结 2.stack 2.1 函数介绍 2.2 模…...
网络原理——UDP
1、 与TCP的关键区别 特性UDPTCP连接方式无连接面向连接可靠性不可靠可靠数据顺序不保证顺序保证顺序传输速度更快相对较慢头部开销8字节20-60字节流量控制无有拥塞控制无有适用场景实时应用、广播/多播可靠性要求高的应用 2、UDP 报文结构 报文结构大致可以分为首部和载荷&a…...
下载pycharm遇到的问题及解决方法
下载和安装 PyCharm 时可能会遇到一些具体问题,以下是一些常见问题及其解决方法: 常见问题及解决方法 下载速度慢或下载中断 解决方法: 检查你的互联网连接,并重启路由器。尝试使用不同的网络连接(如使用移动热点&…...
微硕WSP4407A MOS管在智能晾衣架中的应用与市场分析
微硕WSP4407A MOS管在智能晾衣架中的应用与市场分析 一、引言 智能晾衣架作为一种现代化的家居设备,其核心部件之一是驱动电路,而MOS管作为驱动电路中的关键元件,其性能直接影响到智能晾衣架的运行效率和稳定性。微硕半导体推出的WSP4407A …...
Java 性能优化:如何利用 APM 工具提升系统性能?
Java 性能优化:如何利用 APM 工具提升系统性能? 在当今竞争激烈的软件开发领域,系统性能至关重要。随着应用规模的扩大和用户需求的增加,性能问题逐渐凸显,这不仅影响用户体验,还可能导致业务损失。而 APM…...
FPGA 中 XSA、BIT 和 DCP 文件的区别
在 FPGA(现场可编程门阵列)开发中,XSA、BIT 和 DCP 文件是常见的文件类型,它们在功能、用途、文件内容等方面存在明显区别,以下是详细介绍: 1. XSA 文件 定义与功能 XSA(Xilinx Shell Archiv…...
【c语言】指针进阶
目录 1.字符指针 2.指针数组 3.数组指针 3.1 数组指针的定义 3.2 数组指针的使用 4.数组参数,指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5.函数指针 6.函数指针数组 6.1函数指针数组的定义 6.2 函数指针数组…...
使用FastAPI与OpenAI构建多模态分析API服务
引言 随着多模态AI模型的普及(如Qwen-Omni-Turbo),开发者可以轻松构建支持图像、音频、视频分析的API服务。本文将通过一个FastAPI示例,展示如何通过Base64编码传输媒体文件,并结合OpenAI API实现异步分析。这一方案适…...
集成学习实际案例
一、算法竞赛经典:Kaggle & 国际赛事 1. 泰坦尼克号生存预测(Random Forest) 场景:Kaggle 入门级经典赛题,基于乘客信息预测生存概率。方案: 基模型:决策树(CART)&…...
Linux421用户、组
参考...
树模型与集成学习(决策树核心算法:ID3/C4.5/CART、随机森林、GBDT/XGBoost)
树模型与集成学习 一、决策树 决策树核心算法:ID3/C4.5/CART ID3算法(基于信息增益) 核心原理 ID3(Iterative Dichotomiser 3)是最早的决策树算法之一,由Ross Quinlan于1975年提出。其核心思想是通过信…...
Netdata 监控多台服务器
一、多服务器监控方案选择 1. Netdata Cloud(官方推荐,免费) 特点:无需自建中心节点,通过 Netdata 官方云平台集中查看所有服务器。步骤: 在每台服务器上安装 Netdata(参考上一指南࿰…...
CTF web入门之SQL注入使用工具sqlmap
详细说明:https://blog.csdn.net/qq_41701460/article/details/146391515 web201: 查看数据库 获取不到数据库信息 https://9556eca3-d69a-40f4-b2a4-c89c2d2f8f12.challenge.ctf.show/api/?id1题目有提到 使用–user-agent 指定agent,因为对于 sqlm…...
spark–sql项目实验
数据读取与格式转换 读取JSON数据:使用Spark提供的读取接口(如 spark.read.json() ,在不同编程语言接口下使用方式类似)将给定的JSON格式数据读入Spark中,形成 DataFrame 。 格式转换:按照题目要求&…...
gnome中删除application中失效的图标
什么是Application 这一块的东西应该叫application,准确来说应该是applications。 正文 系统级:/usr/share/applications 用户级:~/.local/share/applications ying192 ~/.l/s/applications> ls | grep xampp xampp.desktoprm ~/.local…...
华为设备命令部分精简分类汇总示例
华为网络设备的命令体系庞大且复杂,不同设备系列(如交换机、路由器、防火墙)和不同操作系统版本(如VRP5、VRP8)的命令可能存在差异。以下是一个 精简分类汇总,涵盖常用配置场景和命令示例: 一、…...
Java 自动装箱与拆箱:基本数据类型与包装类的转换
在Java编程中,自动装箱(Autoboxing)和自动拆箱(Unboxing)是两个重要的概念。它们使得基本数据类型与其对应的包装类之间的转换更加方便,同时也提高了代码的可读性和可维护性。 什么是自动装箱和拆箱&#…...
论文阅读HARIVO: Harnessing Text-to-Image Models for Video Generation
h-space对比损失(DC)的设计细节 目标:确保视频的所有帧在语义上保持一致(例如,同一视频中的不同帧应描述相同的主体和场景,避免物体突变或语义漂移)。 1. h-space的定义 h-space 是U-Net最深…...
OpenCV基础函数学习4
【大纲笔记见附件pdf】 目录 一、基于OpenCV的形态学操作 二、基于OpenCV的直方图处理 三、基于OpenCV霍夫变换 四、基于OpenCV模板匹配 一、基于OpenCV的形态学操作 二、基于OpenCV的直方图处理 三、基于OpenCV霍夫变换 四、基于OpenCV模板匹配...
大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署--完结
大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署 1. ClickHouse与MySQL的区别2. 在群集的所有机器上安装ClickHouse服务端2.1. 在线安装clickhouse2.2. 离线安装clickhouse 3. ClickHouse Keeper/Zookeeper集群安装4. 在配置文件中设置集群配置5. 在每…...
【leetcode题解】算法练习
目录 分治-快排算法 颜色分类 移动零 排序数组 数组中的第K个最大元素 最小K个数 分治-归并排序 排序数组 交易逆序对的总数(困难) 计算右侧小于当前元素的个数(困难) 翻转对(困难) 字符串 最…...
大模型要被特定行业所用,从难到易有四种方式:重新训练或从头构建模型、微调模型、动态提示(如 RAG 技术)、简单提示工程
大模型在特定行业应用的四种方式详解 根据提供的信息,大模型要被特定行业所用,从难到易有四种方式:重新训练或从头构建模型、微调模型、动态提示(如 RAG 技术)、简单提示工程。以下是每种方式的详细解析及实际案例说明…...
[Python] 入门核心笔记
目录 一、Python简介重点 二、编程语言基础重点 三、Python安装重点 四、第一个Python程序重点 五、Python解释器重点 六、Python开发环境重点 一、Python简介重点 起源:1989年Gudio van Rossum开发,1991年诞生,名字源于电视剧《Monty Python…...
TensorFlow中使用Keras
目录 前言创建模型配置layers训练和评估配置模型训练评估和预测 前言 keras集成在tf.keras中。 创建模型 创建一个简单的模型,使用tf.keras.sequential。 model tf.keras.Sequential() # 创建一层有64个神经元的网络: model.add(layers.Dense(64, activationrelu)) # 添加…...
【Flask】Explore-Flask:早期 Flask 生态的实用指南
开源项目:explore-flask/README.rst at master rpicard/explore-flask (github.com) 一、Coding conventions Summary Try to follow the coding style conventions laid out in PEP 8. Try to document your app with docstrings as defined in PEP 257. def…...