【Git系列】Git概述

news2024/11/17 8:50:13

🐳Git概述

    • 🧊1. Git发展历史
    • 🧊 2. Git与SVN的区别
    • 🧊3. Git本地结构
    • 🧊4. 代码托管中心
      • 🪟4.1 代码托管中心是什么?
      • 🪟4.2 托管中心种类


🧊1. Git发展历史

  Git的发展历史可以追溯到2005年。当时,Linux的创始人之一Linus Torvalds决定放弃使用BitKeeper作为Linux内核版本控制系统的工具,因为BitKeeper公司收回了免费许可证。

  于是,Linus决定自己开发一个新的版本控制系统,这就是GitGit的开发初衷是为了管理Linux内核的源代码。他希望这个新的系统能够快速、高效地处理大规模的分布式项目。

  Git的设计理念主要包括以下几个重要特点:

  • 分布式版本控制:Git不依赖于中央服务器,每个开发者都可以拥有完整的代码历史和版本信息。

  • 哈希算法:Git使用SHA-1哈希算法来生成对象的名称,以确保完整性和数据的一致性。

  • 快速性能:Git针对大规模项目进行了优化,能够在短时间内处理大量的版本控制操作。

  • 分支管理:Git非常强大的分支管理功能,可以轻松创建、合并和切换分支,使多人协作开发变得更加灵活。

  随着时间的推移,Git逐渐受到了全球开发者的认可和使用。它不仅仅应用于Linux内核开发,也广泛应用于其他开源项目和商业项目中。

  自2005年以来,Git经历了许多改进和扩展。一些重要的里程碑包括:

  • 2006年:Git成为开源项目并迅速获得广泛关注和支持。
  • 2010年:Git的推出成为Linux内核的主要版本控制系统,这标志着Git已经成为了一个可靠且广泛使用的工具。
  • 2013年:Git迎来了2.0版本,该版本引入了一些新特性,如支持HTTP协议的“smart”传输和“dumb”传输协议。
  • 2014年:Git迎来了2.1.0版本,该版本引入了轻量级工作流和更强大的分支操作等功能。
  • 2016年:Git迎来了2.9.0版本,该版本引入了新的性能优化、安全性改进以及对非英语语言的支持。
  • 2021年:Git已经成为了全球数百万开发者的首选版本控制系统,涵盖了各种规模的组织和项目。

  Git的发展历史是一个不断演进和改进的过程。目前,Git已经成为最流行的版本控制系统之一,并且有一个庞大的社区支持和贡献。


🧊 2. Git与SVN的区别

  GitSVN是两种常见的版本控制系统,它们在存储方式、使用方式和管理模式等方面存在明显的区别。

  1. 存储方式Git以元数据方式存储,即存储的是文件里的内容,以key/value格式存储,通过key值作为唯一标识;而SVN则是直接存储文件,以文件名作为唯一标识。
  2. 使用方式Git的使用流程是add(提交到本地暂存区)->commit(提交到本地仓库)->push(提交到远程仓库);而SVN则是直接提交到远程仓库。
  3. 管理模式Git是分布式系统,每个开发者都在本地维护一个完整的版本历史,即使在无法访问远程服务器的情况下,开发者仍然可以独立地进行版本管理;而SVN则是集中式系统,开发者需要依赖中央服务器进行版本管理。
  4. 分支和合并Git的分支和合并操作相对简单,可以在本地轻松创建和管理分支,并且合并操作可以通过命令行完成;而SVN的分支和合并操作相对复杂,需要在服务器端创建和管理分支,并且合并操作需要通过界面操作完成。
  5. 版本号Git没有全局版本号,每个仓库有自己的版本号,可以通过SHA-1哈希值唯一标识;而SVN有一个全局版本号,每个文件和目录都有一个版本号,通过数字表示。
  6. 安全性Git在本地存储了完整的版本历史,所以即使服务器被攻击,开发者也可以通过本地仓库找回数据;而SVN的版本历史存储在服务器上,如果服务器被攻击或数据丢失,开发者将无法恢复数据。
  7. 项目管理Git在项目管理中更加灵活,可以更容易地支持非线性开发和分布式开发;而SVN相对较为限制,更适合于线性开发模式。

  总结来说,GitSVN各有其优点和缺点。Git的分布式特性和强大的分支管理功能使其在非线性开发和分布式开发中更具优势;而SVN的集中式特性和简洁的界面使其在小型项目和线性开发项目中更容易使用。在具体使用中,开发者可以根据项目需求和团队习惯来选择合适的版本控制系统。


🧊3. Git本地结构

Git 本地仓库主要由三个部分组成:工作区(workspace)暂存区(staging area)版本库(repository)

  1. 工作区(Working Directory):工作区是你在电脑中看到和编辑的所有项目文件的目录。
  2. 暂存区(Staging Area):暂存区是文件变动后的中间状态,你可以将修改的文件添加到暂存区,准备提交到版本库。
  3. 版本库(Repository):版本库是Git最重要的部分,它包含了项目的完整历史记录和元数据。
    • 本地仓库(Local Repository):本地仓库是你在本地计算机上保存的完整项目历史记录。
    • 远程仓库(Remote Repository):远程仓库是保存在网络上的项目版本库,例如GitHubGitee

image-20230704234144304


🧊4. 代码托管中心

🪟4.1 代码托管中心是什么?

  在Git中,代码托管中心充当了远程仓库的角色。它是一个存储代码的中央化位置,用于集中管理和共享项目代码。开发者可以将本地仓库中的代码推送(push)到代码托管中心中,也可以从代码托管中心拉取(pull)最新的代码更新。

  举个例子,张三先从代码托管中心拉取代码,编写新的代码后将代码提交到本地库再push到远程仓库,然后李四加入团队,也从代码托管中心clone克隆整个项目代码,然后也添加新代码并push上去,重复这样操作就完成了多人协作开发。

image-20230705000936242

代码托管中心提供了以下功能:

  1. 远程仓库管理:代码托管中心提供了远程仓库,用于存储和管理项目的代码。开发者可以将本地仓库中的代码推送到远程仓库中,或者从远程仓库中拉取最新的代码。
  2. 版本控制:代码托管中心可以管理多个版本的项目代码。每次推送到远程仓库的代码变动都会创建一个新的版本,这样就可以记录代码的修改历史,并可以回溯到特定的版本。
  3. 分支管理:代码托管中心支持多分支管理,开发者可以在远程仓库上创建、合并和删除分支。这样可以方便团队成员之间的协作开发和并行实验新功能。

  常见的代码托管中心包括GitHubGiteeGitLab等等。它们提供了网页界面和其他工具,使得代码协作和管理更加简单和便捷。通过代码托管中心,多个开发者可以共同协作,共享代码,并保持代码的安全备份。

托管中心种类

🪟4.2 托管中心种类

  • 局域网环境下:可以搭建GitLab服务器作为代码的托管中心,GitLab可以自己去搭建

  • 外网环境下: 可以由GitHub或者Gitee作为代码托管中心,GitHub或者Gitee是现成的托管中心,不用自己去搭建


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

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

相关文章

容灾独家技术揭秘:HyperBDR无主机数据同步技术

01、一对一单机热备-传统灾备方式 单机热备是一种备份解决方案,它使用两台服务器来确保高可用性,是市场上最为常见的灾备模式。 在单机热备中,一台主服务器和一台备用服务器保持同步,以确保在主服务器出现故障或宕机时可以立即切换…

【Unity】超简单特效 - 烟雾

前言: 各式各样的制造工坊常常会出现在任意类型的游戏中,铁匠铺、车间、工业建筑等等,那么如何快速且简单的实现一款可复用的烟雾特效呢,先在脑海中想象一下我们生活里常见的烟雾吧。 初步实现: 在经过简单的想象以后…

TensorFlow项目练手(三)——基于GRU股票走势预测任务

项目介绍 项目基于GRU算法通过20天的股票序列来预测第21天的数据,有些项目也可以用LSTM算法,两者主要差别如下: LSTM算法:目前使用最多的时间序列算法,是一种特殊的RNN(循环神经网络)&#xf…

JDK 8.x 微服务启动JVM参数调优实战

微服务启动JVM参数调优实战 1.1 配置JVM启动参数1.2 解释1.3 JVM参数优化思路1.3.1 调整堆内存大小1.3.2 年轻代大小1.3.3 Metaspace 大小1.3.4 栈大小1.3.5 垃圾回收器选择1.3.6 垃圾回收参数1.3.7 预分配内存 1.3.8 禁用 ResizePLAB2. 常用JVM参数 1.1 配置JVM启动参数 服务…

每日一题——重建二叉树

重建二叉树 题目描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和…

颠倒二进制位,颠倒给定的 32 位无符号整数的二进制位。

题记: 颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的…

ChatPaper全流程加速科研:论文阅读+润色+优缺点分析与改进建议+审稿回复

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…

惊喜!1行Python代码,瞬间测你工作量,分享一个统计代码行数的神器

大家好,这里是程序员晚枫。 **你想不想知道一个项目中,自己写了多少行代码?**我用今天的工具统计了一下开源项目:python-office的代码行数,竟然有21w行! 我们一起看一下怎么用最简单的方法,统…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(16)-Fiddler如何充当第三者再识AutoResponder标签-上

1.简介 Fiddler充当第三者,主要是通过AutoResponder标签在客户端和服务端之间,Fiddler抓包,然后改包,最后发送。AutoResponder这个功能可以算的上是Fiddler最实用的功能,可以让我们修改服务器端返回的数据&#xff0c…

Windows10系统还原操作

哈喽,大家好,我是雷工! 复制了下虚拟机的Win10系统,但其中有一些软件,想实现类似手机的格式化出厂操作,下面记录Windows10系统的还原操作。 一、系统环境: 虚拟机内的Windows10,64…

JavaWeb第三章:JavaScript的全面知识

目录 前言 一.JavaScript的简介 💖概念 💖学习内容 二.JavaScript的引入方式 💖内部脚本 💖外部脚本 三.JavaScript的基础语法 💖语法的书写 💖变量 ✨ 全局变量 ✨局部变量 ✨常量 &a…

vue表单筛选

目录 筛选 HTML scss* filterComp 排序 表格 自定义数据样式 inner-table 分页 删除 default-modal 自定义元素的插槽-占位符 .search-wrap {height: 60px;display: flex;align-items: center;overflow: hidden;padding: 0 20px;.selected-options-wrap {flex: 1;.…

PostgreSQL数据库中,查询时提示表不存在的解决办法

最近遇到一个奇怪的问题,以前从来没有遇到过,在postgres SCHEMA下执行select * from table1语句时,提示表不存在,而实际这个表确是存在的,只不过是在public SCHEMA下。在public SCHEMA下执行这个sql语句是没有问题的。…

主成分分析PCA算法

Principal Components Analysis 这个协方差矩阵是一个nXn的,且是对称矩阵,就会有n个特征值λ和特征向量v,每个特征向量也是n维的。第一行特征向量v对应特征值λ1 。 D(yk):表示主成分yk的方差。方差越大,说明携带的信…

如何在不使用脚本和插件的情况下手动删除 3Ds Max 中的病毒?

如何加快3D项目的渲染速度? 3D项目渲染慢、渲染卡顿、渲染崩溃,本地硬件配置不够,想要加速渲染,在不增加额外的硬件成本投入的情况下,最好的解决方式是使用渲云云渲染,在云端批量渲染,批量出结…

【迁移】Mysql数据库备份 迁移

【迁移】Mysql数据库备份 迁移 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有…

金蝶云星空任意文件读取漏洞复现(0day)

0x01 产品简介 金蝶云星空是一款云端企业资源管理(ERP)软件,为企业提供财务管理、供应链管理以及业务流程管理等一体化解决方案。金蝶云星空聚焦多组织,多利润中心的大中型企业,以 “开放、标准、社交”三大特性为数字…

【Linux】 UDP网络套接字编程

🍎作者:阿润菜菜 📖专栏:Linux系统网络编程 文章目录 一、网络通信的本质(port标识的进程间通信)二、传输层协议UDP/TCP认识传输层协议UDP/TCP网络字节序问题(规定大端) 三、socket编…

ClickHouse的安装启动

安装步骤 1.关闭防火墙 2.修改资源限制配置文件 2.1 路径:/etc/security/limits.conf 在末尾添加: * soft nofile 65536 #任何用户可以打开的最大的文件描述符数量,默认1024 这里的设置会限制tcp连接数 * hard nofile 65536 * soft nproc…

什么是架构 架构图

如何画架构图_个人渣记录仅为自己搜索用的博客-CSDN博客 什么是架构?要表达的到底是什么? Linus 03 年在聊到拆分和集成时有一个很好的描述: I claim that you want to start communicating between independent modules no sooner than you…