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

【Linux】Git

Git

git讲解文章内容大纲:

1.如何理解版本控制->git gitee github

2.git历史简介

3.git的操作(要做到Linux和Windows之间能互相传输起来)

如何理解版本控制

一般在企业中,一个项目的开发是由多个人构成的。

所以需要一个集中式的工具,把所有人写的代码进行合并。

有时我们被要求比如拿出第一个版本,这就需要版本控制,备份下以前的版本,面对善变的**“甲方”**。

可以“回滚”。

git不仅做了版本控制。

git是什么?将备份、回滚等操作通过程序自动化完成,写出来的用于自动做这些操作的工具就叫做版本控制器

假设李四现在有一个磁盘D盘。

在自己的工程下进行管理:

image-20241203215100865

在里面有一个data目录,该目录下有一个lisi文件夹,该文件下有v1、v2、v3等版本。

其他人比如王五可以让李四帮忙管理:

给每个新建的文件夹可以叫做仓库

这就是仓库的概念,仓库本质上是个文件夹。

所以我们平时比如在gitee上新建仓库其实就是在远端建立了一个linux下的文件夹。

但是全世界许多人都有这样版本控制的需求。

所以,问题是,能不能让每个人都成为“李四”呢?

也就是都能像这样管理

大家的代码等放在云服务器里,而不是个人电脑里,因为个人电脑只能个人访问。

能不能开发一个软件,也就是一个客户端,每个人可以在这个客户端里自己上传和下拉,可以在这里查看自己的任意版本。

现在有云服务器,但是这个人要是没有呢?

所以就需要更全面的方案。

image-20241203220148980

所以像这样,在Windows指的就是每个用户自己的电脑,里面有一个应用程序x.exe,它可以让每个人将自己的代码添加到本地仓库里。可以去获取本地仓库的任何版本。

所有人只要打开这个客户端程序,向这个客户端程序里添加自己的文件,就在本地把自己的代码文件管理好了。

不用网络。相当于有一个比较好的管理方法,通过每个人使用这个应用程序,就可以在自己的本地自动化按照这个方法去管理自己的代码文件。

所以这种,就叫做本地仓库

image-20241203220656726

但要是电脑突然坏掉、黑屏蓝屏怎么办?而且如果想不同地点的多人协作写同一个项目呢?

所以还需要完善数据安全和多人协作的问题

怎么保证本地各个版本的数据是安全的呢?

所以云服务器不止需要对所有人的仓库进行管理的能力。

还要可以每个人从本地将自己的仓库push到云服务器上。所以在云服务器上就会有一个和本地一模一样的同名仓库。

仓库本质上就是一个文件夹。在远端linux下的一个文件夹。

这就是区别于本地仓库的远端仓库

这就是云服务。

如果不止想管理一种类型的文件呢?所以新的需求是在本地有不同的仓库。(每个仓库有自己的不同版本)

需要能通过这同一个客户端,将所有的本地仓库都能推送到远端。

云服务器需要的新功能是用户身份识别,像用户登录注册。一个账户在自己的云服务器下有多个仓库。

刚才我们说的这个每个人本地可以自动管理仓库的应用程序x.exe其实就是我们的git

在远端和本地各有一份一模一样的仓库,就是为了数据安全。

还需要能让本地仓库和远端仓库进行互相数据同步

所以就能不能让git这个客户端程序在客户端和远端都能跑?

我们说的数据互相同步,就是让客户端的git和远端的git直接能互相同步。

所以也就是说这个git既是一个客户端,也是一个服务器。

云服务器也是一个操作系统。

想让远端和本地,两方是对等的。

也就是让客户在网页上也能做各种版本控制。比如有时没带电脑,就可以在网页上提取各种版本。就相当于服务器上也来个git,只不过是linux版本。

所以主要在本地做版本控制,需要同步的时候就让这两个git程序网络通信,把数据打包同步。

这个我们一直说的远端,就是gitee或者github

image-20241203223021617

git是一个版本控制器软件(有它对应的网络功能),gitee或者github是基于git的网站平台。

用过“小乌龟”将代码上传到gitee的我们知道,每次要用的add和commit,其实就是在本地进行托管。而git push才是把本地推送到远端,让远端和本地进行同步。


git是一个版本控制器,它的客户端和服务器都是它自己。

git是一个去中心化、分布式的版本控制:

这么多个本地都使用同一个云服务器时,其实每个里面都含有一模一样的仓库,所以当某个仓库想要拉取的时候,既可以从云服务器上拉取,也可以从其他本地进行拉取,这就是去中心化、分布式的版本控制原则。

远端和本地两端低位是对等的,没有明显的哪个是客户端哪个是服务器。

其他的,git之外的版本控制器不一定是本地之间能互相拉取的,可能是要在远端搭一个server,地位不对等。

协作开发

现在既然我们有了gitee、github这样的平台或网站,它可以让多个人建立一个公共的仓库。

image-20241203224327716

比如一个公司在这个网站上有一个自己的公司账号,有一个xxx项目仓库,在这个仓库里有3个文件夹,模块123。

有三个程序员,每个人都把整个公司的xxx项目的所有仓库全部同步到自己本地。

三个人分别负责模块123

image-20241203224611754

每个人向远端对应的模块仓库里同步自己的代码,他们就在这同一个项目里实现了协作。

git的历史

(简单提一嘴)

git是开源的。

linux项目开源后,参与linux项目的人越来越多,linux的作者Linus Benedict Torvalds会收到世界上很多人的代码,他需要审核后将有用的合并到自己的linux项目里。

所以就产生了要能够版本管理、多人协作的软件的需求。

所以Torvalds去网上找类似功能的软件,但是早期企业级软件收费。一家版本控制公司厂商愿意免费将自己版本控制器给linux社区使用。

linux社区里有人破解了这个版本控制器,并且高调宣布。所以厂商取消了免费使用。

Torvalds就自己写了git,也开源了。

开源后许多程序员又来将git开发迭代。

于是git和linux互相扶持,繁荣发展。

在一个局域网里(比如宿舍或学校)搭个git,一个电脑搭个git,另一个电脑也能访问它。不同电脑之间也可以互相访问。因为git是一个去中心化、分布式的版本控制器。


本文到此结束,下篇文章将具体来讲git的操作


http://www.kler.cn/a/428526.html

相关文章:

  • c++常见设计模式之装饰器模式
  • 寒假刷题记录
  • MyBatis和JPA区别详解
  • 电梯系统的UML文档07
  • 快速学习GO语言总结
  • 55.【5】BUUCTF WEB NCTF2019 sqli
  • 运输层4——TCP格式(重点!)
  • 24/12/8 算法笔记<强化学习> AC:actor-critic
  • 安装部署PowerDNS--实现内网DNS解析
  • AI视频玩法:动物融合技术解析
  • 智驾端到端时代,何以「奔驰」?
  • 图神经网络代码学习—基本使用与分类任务
  • JWT 原理与使用
  • 高阶数据结构--B树B+树实现原理B树模拟实现--Java
  • Arthas采集火焰图
  • esp-idf基于vscode插件开发环境搭建
  • 【数电】常见时序逻辑电路设计和分析
  • 纯虚函数和抽象类
  • 使用Jackson忽略特定字段的序列化
  • 【Windows11系统局域网共享文件数据】
  • idea中手动停止后selenium UI自动化打开的浏览器及chromedriver进程就会一直在后台中,使用钩子程序保证在程序结束时一定会进行退出。
  • 【机械加工】数字化软件打造,如何实现3D交互可视化?
  • 麦肯锡报告 | 2023年科技趋势采纳水平:成熟技术与新兴技术的平衡发展
  • 【CANoe示例分析】Basic UDP Multicast(CAPL)
  • 【链表小结】
  • 汽车EEA架构:发展历程