Git(二)版本控制、发展历史、初始化配置、别名

目录

    • 一、版本控制
      • 1.1 为什么要使用版本控制?
      • 1.2 集中化的版本控制系统
      • 1.3 分布式的版本控制系统
      • 1.3 两种版本控制系统对比
        • 集中式(svn)
        • 分布式(git)
    • 二、发展历史
    • 三、初始化配置
      • 3.1 配置文件
      • 3.2 配置内容
    • 四、别名

在这里插入图片描述

  • 官网地址: https://www.git-scm.com/
  • 官方文档: https://www.git-scm.com/docs
  • 官方电子书: https://git-scm.com/book/zh/v2
  • GitHub: https://github.com/git/git

一、版本控制

版本控制:是指记录一个或若干个文件的内容变化,以便将来查阅特定版本修订情况的系统。

1.1 为什么要使用版本控制?

  • 有了版本控制,我们可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。(就算我们将项目中的文件改的面目全非,也可以轻松恢复到原先的样子。)
  • 有了版本控制,我们可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致问题出现的原因等等。

常见的版本控制系统有两种:集中化的版本控制系统分布式的版本控制系统

1.2 集中化的版本控制系统

集中化的版本控制系统诸如:CVSsvn 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者提交更新。在版本控制初期,这已成为版本控制系统的标准做法。

这种做法带来了好处,现在每个人都可以在一定程度上看到项目中的其他人正在做什么。而管理员也可以轻松掌握每个开发者的权限,并且管理一个集中化的版本控制系统要远比在哥哥客户端上维护本地数据库来得轻松容易。

1.3 分布式的版本控制系统

分布式版本控制系统诸如:Git、BitKeeper 等,客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地拉取下来。这样,任何一处协同工作用地服务器发生故障,事后都可以用任何一个拉去下来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。

更进一步来看,许多这类系统都可以指定和若干不同的远程代码仓库进行交互。藉此,我们就可以在同一项目中分别和不同工作小组的人相互协作。

分布式的版本控制系统在管理项目时,存放的不是项目版本与版本之间的差异,它存的是索引(所需磁盘空间很少,所以每个客户端都可以放下整个项目的历史记录)。

1.3 两种版本控制系统对比

集中式(svn)

优点:

  • 代码存放在单一的服务器上,便于项目的管理。

缺点:

  • 由于存储的是文件差异,导致回滚的速度会很慢;
  • 服务器宕机,员工写的代码得不到保障;
  • 本地无法新建分支,每次需要在服务器新建分支;
  • 服务器磁盘损坏,每个项目的历史记录都会丢失。
分布式(git)

优点:

  • 由于存储的是索引,回滚速度极快;
  • 分布式存储,不担心服务器宕机或损毁;
  • 支持本地新建分支,操作方便。

缺点:

  • 操作命令相比 svn 较多,存在学习成本。

二、发展历史

同生活中的许多伟大事件一样,Git 诞生于一个极具创造性的年代。

Linux 内核开源项目有着为数众多的参与者。1991-2002 年间,绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。

在这里插入图片描述

到了 2005 年,开发 BitKepper 的商业公司同 Linux 内核开源社区的合作关系结束。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linux Torvalds/林纳斯·托瓦兹)不得不西区搅匀,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对于新的系统制定了若干目标:

  • 分支切换速度快、容量小(压缩)、简单的设计、完全分布式
  • 对非线性开发模式的强力支持(允许上千个并行开发的分支)
  • 有能力搞笑管理类似 Linux 内核一样的超大规模项目(速度和数据量)

自诞生于 2005 年依赖,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。他的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统可以应付各种复杂的项目开发需求。


三、初始化配置

一般在新的系统上,我们都需要先配置下自己的 Git 工作环境。配置工作只需一次,以后升级时还会沿用现在的配置。当然,如果需要,我们随时可以用相同的命令修改已有配置。

3.1 配置文件

Git 提供了一个 git config 的命令来配置或读取相应的工作环境变量,而正是这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

  • /etc/gitconfig 文件:系统中对 所有用户 都普遍适配的配置。若使用 git config --system,读写的就是这个文件。
  • ~/.gitconfig 文件:用户目录下的配置文件只适用于 该用户。若使用 git config --global,读写的就是这个文件。
  • .git/config 文件:当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件)这里的配置仅仅针对 当前项目 有效。

注意:每一个级别的配置都会覆盖上层的相同配置。

3.2 配置内容

主要需要配置的是你个人的 用户名邮箱地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,如何联系,所以会随更新内容一起被永久纳入历史记录。

-- 配置用户名
git config --global user.name "ACGkaka"
-- 配置邮箱地址
git config --global user.email acgkaka@example.com
-- 查看配置信息
git config --list
-- 删除配置信息
git config --global --unset user.email

四、别名

Git 并不会在你输入部分命令时自动推断出你想要的命令。如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松为每一个命令设置一个别名。

例如:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

当要输入 git commit 时,只需要输入 git ci 即可。

整理完毕,完结撒花~ 🌻





参考地址:

1.【尚硅谷】深入Git底层原理丨一套掌握git版本控制系统,https://www.bilibili.com/video/BV1Yi4y137eF/

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

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

相关文章

论文阅读 - Hidden messages: mapping nations’ media campaigns

论文链接: https://link.springer.com/content/pdf/10.1007/s10588-023-09382-7.pdf 目录 1 Introduction 2 The influence model 2.1 The influence‑model library 3 Data 4 Methodology 4.1 Constructing observations 4.2 Learning the state‑transiti…

自动驾驶之—LaneAF学习相关总结

0.前言: 最近在学习自动驾驶方向的东西,简单整理一些学习笔记,学习过程中发现宝藏up 手写AI 1. 概述 Laneaf思想是把后处理放在模型里面。重点在于理解vaf, haf,就是横向聚类:中心点,纵向聚类&…

内网渗透——macOS上搭建Web服务器

# 公网访问macOS本地web服务器【内网穿透】 文章目录 1. 启动Apache服务器2. 公网访问本地web服务2.1 本地安装配置cpolar2.2 创建隧道2.3 测试访问公网地址3. 配置固定二级子域名3.1 保留一个二级子域名3.2 配置二级子域名4. 测试访问公网固定二级子域名 以macOS自带的Apache…

Android 发布 15 周年了!Google 员工说出了这些年的美好回忆

原文链接:https://blog.google/products/android/android-15th-anniversary-googler-highlights/ 作者:Sameer Samat, GM and VP of Android Ecosystem 翻译者:张拭心 https://shixin.blog.csdn.net/ 自从带有 Android Market(现在…

python自动化测试(四):ECShop后台:商品分类添加

前置条件: 本地部署:ECShop的版本是3.0.0、Google版本是 Google Chrome65.0.3325.162 (正式版本) (32 位) Google驱动的selenium版本是3.11.0 目录 前置代码 一、登录(后台登录) 二、进入商品分类页…

常用应用安装教程---在centos7系统上安装JDK8

在centos7系统上安装JDK8 1:进入oracle官网下载jdk8的tar.gz包: 2:将下载好的包上传到每个服务器上: 3:查看是否上传成功: [rootkafka01 ~]# ls anaconda-ks.cfg jdk-8u333-linux-x64.tar.gz4&#xf…

asp.net古代服饰系统VS开发sqlserver数据库web结构c#编程包含购物答题功能点

一、源码特点 asp.net 古代服饰系统 是一套完善的web设计管理系统(含购物 答题),系统采用mvc模式(BLLDALENTITY)系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境 为vs2010,数据库为sqlserver…

Vue2 跨域问题报错AxiosError net::ERR_FAILED、 Network Error、ERR_NETWORK

请求场景: 当前页面URL:http://127.0.0.1:8000/testcase 跳转请求页面URL:http://127.0.0.1:5000/testcase_orm 使用axios请求 时 页面提示跨域报错 跨域报错信息 > Access to XMLHttpRequest at http://127.0.0.1:5000/testcase_orm fr…

[SQL开发笔记]LIKE操作符:在 WHERE 子句中搜索列中的指定模式

一、功能描述: LIKE操作符:用于在 WHERE 子句中搜索列中的指定模式。 二、LIKE操作符语法详解: LIKE 语法 SELECT column1, column2,…FROM table_nameWHERE column LIKE pattern; 参数说明: (1)colum…

目前和未来的缓存构建

说起来可能有点反直觉,有时候不运行反而可以帮助我们加快速度,这正是网络浏览器运行的指导原则。不必在页面上加载所有内容,缓存的元素已经存在,不需要每次访问网站或网页时都重新加载。页面加载速度越快,浏览器的工作…

大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)

文章目录 SQL 聚合函数(Aggregate Function) SQL 聚合函数(Aggregate Function) Python UDAF,即 Python AggregateFunction。Python UDAF 用来针对一组数据进行聚合运算,比如同一个 window 下的多条数据、或者同一个 key 下的多条数据等。针对同一组输入数据,Python A…

伦敦银现货白银走势如何应对

伦敦银是国际现货白银交易的别称,它每天的价格走势受到全球投资者广泛的关注,也是全球各个白银市场的价格指标。白银投资者要了解伦敦银走势的特点,才能更好地进行分析,实现自己的所预期的收益。 整体来说,伦敦银价格的…

Visual Studio远程连接Linux编译代码时,头文件在/usr/include中找不到,文件存在于/usr/include的子目录中

文章目录 1 问题的提出2 问题分析3 问题的解决 1 问题的提出 VS2022在编译数据安全传输平台时,远程连接到Centos上进行编译,但是提示找不到json头文件。 2 问题分析 在Linux系统下编译代码时,系统会主动到/usr/include目录主动搜索头文件。…

【Unity程序技巧】事件管理器

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Spring Boot集成Swagger接口分类与各元素排序问题

在上一篇中我们完成使用JSR-303校验,以及利用Swagger2得到相关接口文档,这节,我们在原先的基础之上,完成Swagger中关于对各个元素之间控制前后顺序的具体配置方法。 Swagger的接口的分组 首先我们需要对Swagger中的接口也就是以…

智能汽车安全:保护车辆远程控制和数据隐私

第一章:引言 智能汽车技术的快速发展为我们带来了许多便利,但也引发了一系列安全和隐私问题。本文将探讨智能汽车安全的重要性,以及如何保护车辆远程控制和数据隐私。 第二章:智能汽车远程控制 智能汽车的远程控制是一项令人兴…

全球生物气候产品2.5m和30s分辨率

简介 生物气候是指生物和气候相互作用的结果,包括植物和动物对气候的影响,以及气候对生物的影响。生物气候研究的是生物、气候、土地和水等自然要素之间相互作用的过程,旨在探讨它们是如何互动并导致生态系统的变化的。生物气候对于理解全球…

MySQL数据库基本操作1

文章目录 主要内容一.DDL1.创建表代码如下(示例): 2.创建表的类型3.其他操作4.修改表结构格式代码如下(示例): 二.DML1.数据插入代码如下(示例): 2.数据修改代码如下(示例): 3.数据删…

FastAPI 快速学习之 Flask 框架对比

目录 一、前言二、FastAPI 优势三、Hello World四、HTTP 方法五、URL 变量六、查询字符串七、POST 请求八、文件上传九、表单提交十、Cookies十一、模块化视图十二、数据校验十三、自动化文档Swagger 风格ReDoc 风格 十四、CORS跨域 一、前言 本文主要对 FastAPI 与 Flask 框架…

Qt在Android上设置连接到指定的WIFI

在Android上使用Qt设置连接到指定的Wi-Fi网络需要使用Java代码来完成,涉及到Android平台特定的API和权限。接下来下面将会演示如何在Qt中调用Java代码来实现这一功能。 【1】在Qt项目中创建一个名为"AndroidWifiConnector"的Java类。 (新建文件,选择JAVA类型,名字…