【Linux】分布式版本控制工具git

news2025/2/27 2:07:17

在这里插入图片描述

​📝个人主页:@Sherry的成长之路
🏠学习社区:Sherry的成长之路(个人社区)
📖专栏链接:Linux
🎯长路漫漫浩浩,万事皆有期待

上一篇博客:【Linux】Linux调试器 - gdb

文章目录

  • 一、前言
  • 二、版本控制
    • 1、何为版本控制
    • 2、版本控制工具
      • ① 集中式版本控制工具
      • ② 分布式版本控制工具
  • 三、代码托管平台
  • 四、Linux上使用git
  • 总结:

一、前言

大家可能用过 Github, Gitee 等代码托管平台。实际上这些平台都是可以通过 git 来进行管理的,而 git 本身是一个开源的、免费的 分布式版本控制工具 ,通过 git 可以快速高效地处理代码的合并,项目的管理等功能。

而 git 在团队协作开发上也是十分好用的,因为 git 支持多分支,团队成员可以将代码提交到一个仓库,从而对项目进行多人合作开发。今天我们将学习何为分布式版本控制工具。并且做到能在 LInux 上使用 git ,完成代码的提交等基本操作。

二、版本控制

Git 是一个分布式版本控制工具,但是版本控制是什么,版本控制工具又是什么,它们能干什么,优点是什么?

1、何为版本控制

版本控制是一种记录文件内容变化,以便查阅指定版本修订情况的控制系统。版本控制最大的优点就是记录了以往的版本,可以随时查阅版本记录,从而让用户能查看历史版本。

比如,论文我们应该都写过。而论文从开始写,到交上去,可能会修正很多遍。每一个文件都是一个版本,都记录着之前的文件。

而版本控制就是将这些版本记录下来,方便用户查阅之前的版本 。通过版本控制就可以更加清晰的了解各版本的变化,从而做出升级和改进,当进行团队协作时也更加方便。

2、版本控制工具

版本控制工具分为两类,集中式版本控制工具和分布式版本控制工具。

① 集中式版本控制工具

常见的集中式版本控制工具有 SVN ,CVS 等。集中式版本控制有一个特点就是 只有单一的集中管理的服务器 。在服务器中,保存着所有文件的修订版本。

在协同工作时,小组成员都会通过客户端链接到服务器,通过服务器来完成提交更新。

在这里插入图片描述

这种版本控制可以通过管理员来掌握小组成员的动作情况,管理权限。管理成本低,管理模式集中。

但是这种版本控制有一个致命的缺陷:服务器发生故障,小组成员就无法协同工作 。

② 分布式版本控制工具

常见的分布式版本控制工具有 Git ,Mercurial 等。

分布式版本控制工具通常有客户端和服务端。客户端提取的不是这些文件版本,而是把代码仓库完整的通过镜像的方式克隆到本地,就是 本地库

这种机制也让仓库的控制性更加好。如果一处协同工作的文件故障了,那么可以通过其他客户端的本地库进行恢复。

在这里插入图片描述

而分布式版本控制工具也解决了集中式版本工具的弊病 :

当服务器崩掉时,也可以进行开发,因为存在本地库,通过本地库就可以进行版本控制
在小组成员的客户端上保存着完整的项目备份,提高了安全性

而这种控制方式也提高了使用者的舒适度 :
如果用户不想要把自己的项目上传到远端,也可以将项目上传到本地,进行本地式的管理。

对于协同开发的用户,更是可以将项目上传至服务器,让服务器进行数据管理,避免数据丢失,更加安全。

三、代码托管平台

说到代码托管平台,大家耳熟能详的实际上就是 Github ,Gitee 等平台了。

Github :
在这里插入图片描述

Gitee :
在这里插入图片描述

这些代码托管平台的特点就是 继承了Git 代码仓库托管的功能,并且增加了许多个性化的功能,如代码片段分享,订阅等特色功能 。除了通过 Git 进行版本的控制,用户能在网站上直接进行操作,让用户在网站上也可以完成对版本的修改。

这样的方式更贴近于用户体验。增加了个性化功能,让代码托管平台不仅能版本控制,更作为一个协作的平台,变成一个更大的交流之地。

Github 和 Gitee 的区别:

Gitee 是国内的,Github 是国外的
Github 用户基数较多,开源项目更加丰富
Gitee 的用户大多是国人,且是中文界面更容易让人接受
Github 的服务器在国外,如果不使用加速器的话访问速度相对较慢,而Gitee 则由于服务器在国内的原因,访问速度较快

四、Linux上使用git

先用 git --version 检查一下 LIinux 下有没有安装 git :

在这里插入图片描述

显然是安装了的,如果没有安装的可以使用安装:

sudo yum install -y git

1、创建仓库
紧接着到 Gitee 或 Github 上创建一个仓库,我使用的是Gitee 。

首先选择新建仓库:
在这里插入图片描述

然后设置仓库名、是否开源,初始化,设置模板等…

在这里插入图片描述

然后点击克隆,以 https 的形式复制远端仓库的链接:

在这里插入图片描述

2、仓库克隆和细节介绍

使用命令:

git clone https格式网址

将远端仓库克隆到本地,输入指令后需要输入用户名和密码:

在这里插入图片描述

:只有私有的克隆时才需要输入用户名和密码,开源的话就不用输

然后目录下就出现了一个目录,名字就是上方创建目录时生成的路径名;进入目录,在显示一下隐藏文件,可以发现一个 ,git 的隐藏目录。

在这里插入图片描述

而之前我们仓库中的文件也都在这里,就比如 Readme 文件。同时也出现了一个叫做 .git 的目录。.git 实际上就是仓库,也就是本地库,git 中会将修改记录以二进制的形式保存在文件中。

使用 tree .git 查看一下目录内容:框出来的部分就是修改记录
在这里插入图片描述

: .git 中的内容不要改!

3、git三板斧

首先,进行一下内容拷贝,将上次写的进度条代码文件夹拷贝到当前目录下:

在这里插入图片描述

当内容拷贝过来之后,需要将本文件夹内所有内容提交到暂存区 :

git add .

在使用指令查看一下暂存区状态:

git status

下面显示了 new file ,说明我们已经将文件提交到了暂存区。

在这里插入图片描述

接着,将暂存区的文件提交到本地库 :

git commit -m "日志信息"

引用为上传的日志,日志一定要认真写 ,这表明这部分代码是什么,或者新增加了什么功能

在这里插入图片描述

并且别人是可以看到你的日志信息的,只要你的仓库开源,别人将仓库克隆到本地后,就可以使用 git log 或 git reflog 查看到你的日志信息:

git reflog 为查看版本信息,git log 为查看版本详细信息。

:这些日志都是被保存下来的,所以在团队协作中,一定不能乱写。打马赛克的部分是邮箱,不好好写小心被领导批评(bushi)。

在这里插入图片描述

当第一次提交时,会遇到一个小问题:

在这里插入图片描述

框出来的话表明你需要设定一下自己的邮件和用户名,方便之后别人查看到你的日志后和你及时联系。

这时需要输入两行指令,就是第二个方框中的内容:

git config --global user.email "xxx@xx.com"
gti config --global user.name "Sherry"

之后再输入 git commit -m" ",显示的有 create mode 数字 文件,就表明已经将暂存区的内容提交到了本地库,也就是 .git 目录中。

add 和 commit 的操作就是将文件保存到本地库的动作(还是在本地),它们的关系下图表示:
在这里插入图片描述

接下来将本地库内容推送到远端 :

git push

输入指令后要求我们输入用户名密码,注意这里的账号是一开始克隆仓库时使用的用户名和密码。
在这里插入图片描述

输入后呈现这样的格式就说明推送成功了。

可以设置免密码提交,操作很简单,可以参考这篇博客。

:提交时可能会出现这样的警告

在这里插入图片描述

这个告警的影响其实不大,只需要修改全局配置,让每次 push 的时候总是显示即可。

对于 matching 和 simple ,分别输入:

git config --global push.default matching
git config --global push.default simple

进行完这些步骤,切换至 gitee 查看一下是否提交成功:

在这里插入图片描述

已经提交成功了(后面显示的时间,是把文件放到本地库的时间)

git 三板斧

git add . :将内容提交到暂存区
git commit -m “日志信息” :将内容提交到本地库,日志要好好写
git push :将本地库中的内容推送到远端仓库

总结:

今天我们学习了分布式版本控制工具—— git 。Git 无论是在平常的学习,还是日后工作的团队开发中都是极其重要的,所以之后可以在 Linux 上实操一下。接下来,我们将继续学习Linux的其他知识。希望我的文章和讲解能对大家的学习提供一些帮助。

当然,本文仍有许多不足之处,欢迎各位小伙伴们随时私信交流、批评指正!我们下期见~

在这里插入图片描述

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

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

相关文章

Autosar模块介绍:Memory_1(模块概述)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍:Memory_1(模块概述 1 参考文献2 术语及缩写3 模块在架构中位置及作用 1 参考文献 [1] AUTOSAR_SWS_NVRAMManager.pdf [2] AUTOSAR_SRS_MemoryServices.pdf [3] AUTOSAR_SRS_MemoryHWAbstractionLayer.pdf [4] AUTOS…

dbeaver连sqlserver默认数据库

url:jdbc:sqlserver://localhost:1433

Pytorch-CNN-CIFAR10

文章目录 model.pymain.py运行图 model.py import torch.nn as nn import torch.nn.functional as F import torch.nn.init as init class CNN_cls(nn.Module):def __init__(self,in_dim):super(CNN_cls,self).__init__()self.conv1 nn.Conv2d(in_dim,32,1,1)self.pool1 nn.…

云原生微服务治理 第五章 Spring Cloud Netflix 之 Ribbon

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第四章 Spring Cloud Netflix 之 Ribbon 文章目录 系列文章目录[TOC](文章目录) 前言1、负载均衡1.1、服务端负载均衡1.2、…

JavaScript系列从入门到精通系列第五篇:JavaScript中的强制类型转换包含强制类型转换之Number,包含强制类型转换之String

文章目录 前言 一:强制类型转换 1:强制类型转换为String (一):方式一:调用被转换类型的toString()方法 (二):方式二:调用String函数 2:强制类型转换为Number (一):方式一&…

【Proteus仿真】【STM32单片机】大棚远程监测控制

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 系统运行后,LCD1604显示传感器检测的环境温湿度、土壤湿度、光照强度、CO2浓度和阈值;可通过上位机远程观察传感器采集的数据显示;可通过K3键进入阈值设置模式&#xf…

如何使用大型语言模型LLMs作为历史课程的教学工具?#提示工程技巧

Mixlab从2018就开始分享过一些关于教育的内容: GPT-4等对教育的未来意味着什么?2023-05-05 学习的目的是什么?我喜欢的教育产品应该是这样的 2019-07-08 你是 Infinite Learner 吗?2018-05-27 今天继续教育的话题,我们…

基于微信小程序的超市售货管理平台设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…

通过内网穿透,在Windows 10系统下搭建个人《我的世界》服务器公网联机

文章目录 1. Java环境搭建2.安装我的世界Minecraft服务3. 启动我的世界服务4.局域网测试连接我的世界服务器5. 安装cpolar内网穿透6. 创建隧道映射内网端口7. 测试公网远程联机8. 配置固定TCP端口地址8.1 保留一个固定tcp地址8.2 配置固定tcp地址 9. 使用固定公网地址远程联机 …

浅谈电气防火保护器在地下商场的应用 安科瑞 缪阳扬

摘 要:近年来,我国城市发展速度加速。很多城市大力建造地下建筑设施,比如地铁、地下停车场和地下商场等。地下商场属于人员密集型建筑,其防火设计一直令相关的专家头疼。由于人员密集,防火处理不好将酿成灾难性的后果。…

软件定制APP开发步骤分析|小程序

软件定制APP开发步骤分析|小程序 软件定制开发步骤: 1.需求分析: 这是软件定制开发的第一步,也是最关键的一步。在这个阶段,软件开发团队需要与客户进行沟通,了解客户的具体需求和期望。通过讨论和交流,确…

【C++】左值和右值

基本概念左值和右值左值引用和右值引用 右值引用使用场景和意义左值引用的使用场景左值引用的短板右值引用和移动语义编译器优化移动赋值move右值引用引用左值右值引用的其他使用场景 完美转发万能引用forward 模板函数 基本概念 左值和右值 左值 左值(lvalue&…

tp5连接多个数据库

一、如果你的主数据库配置文件都在config.php里 直接在config.php中中定义db2&#xff1a; 控制器中打印一下&#xff1a; <?php namespace app\index\controller; use think\Controller; use think\Db; use think\Request; class Index extends Controller {public fun…

DEM格式转换:转换NSDTF-DEM国标数据格式为通用格式,使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。

DEM格式转换&#xff1a;转换NSDTF-DEM国标数据格式为通用格式&#xff0c;使用ArcGIS工具转换NSDTF-DEM国标.dem文件为通用.tif格式。 *.dem是一种比较常见的DEM数据格式&#xff0c;其有两种文件组织方式&#xff0c;即NSDTF-DEM和USGS-DEM。 &#xff08;1&#xff09;NSDT…

【Linux基础】第26讲 Linux 查找和过滤命令(一)——find命令

find命令是根据文件属性进行查找的&#xff0c;如文件名&#xff0c;文件大小&#xff0c;所有者&#xff0c;所有组&#xff0c;是否为空&#xff0c;访问时间&#xff0c;修改时间等。基本格式&#xff1a; find path [options] 先定位到etc 目录下 cd /etc1.按照文件名查找 …

C-Lodop 在域名下使用跨域问题

Access to script at http://localhost:18000/CLodopfuncs.js?priority0 from origin http://xxxxxx has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space local. 解决&#xff1a; 浏览器输入…

记一次 Java Testcontainers CPU 100% 问题排查过程

以为代码进入了死循环&#xff0c;结果并没有&#xff01; 文章目录 背景与问题排查过程代码路经确认内存分析咨询 okio 社区等等&#xff0c;好像并没有死循环能否从内存快照发现其他问题&#xff1f; 背景与问题 本问题来源于 ShardingSphere issue: Integration tests occa…

使用applescript自动化trilium的数学公式环境

众所周知&#xff0c;trilium什么都好&#xff0c;就是对数学公式的支持以及markdown格式的导入导出功能太拉了&#xff0c;而最拉的时刻当属把这两个功能结合起来的时候&#xff1a;导入markdown文件之后&#xff0c;原来的数学公式全没了&#xff0c;需要一个一个手动用ctrlm…

解密list的底层奥秘

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…

AS中部署NCNN

参考链接 http://681314.com/A/Clzr6Q2OBO https://blog.csdn.net/xs1997/article/details/131747372 一、文章背景&#xff1a;公司再进行一个项目时&#xff0c;使用PyTorch框架&#xff0c;python语言及opencv工具进行神经网络深度学习算法进行训练。生成ONNX模型&#xff…