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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

esp32-C3固件烧录用户手册

esp32-C3固件烧录用户手册1.4 文章目录 esp32-C3固件烧录用户手册1.4烧录所需硬件软件工具vscodeplatformIOflash_download_tools 插座与USB转TTL模块之间接线esp32-C3版本插座(底板4针) bin固件和烧录地址获取详细烧录地址和信息获取文件系统程序详细烧…

输入/输出应用程序接口和设备驱动程序接口

文章目录 1.输入/输出应用程序接口1.字符设备接口2.块设备接口3.网络设备接口1.网络设备套接字通信 4.阻塞/非阻塞I/O 2.设备驱动程序接口1.统一标准的设备驱动程序接口 1.输入/输出应用程序接口 1.字符设备接口 get/put系统调用:向字符设备读/写一个字符 2.块设备接口 read/wr…

Android拖放startDragAndDrop拖拽onDrawShadow动态添加View,Kotlin(3)

Android拖放startDragAndDrop拖拽onDrawShadow动态添加View,Kotlin(3) import android.content.ClipData import android.graphics.Canvas import android.graphics.Point import android.os.Bundle import android.util.Log import android.…

酷开科技 | 酷开系统大屏电视,打造精彩家庭场景

在信息资讯不发达的年代,电视机一直都是个人及家庭重要的信息获取渠道和家庭娱乐中心,是每个家庭必不可少的大家电之一!在快节奏的现代生活中,受手机和平板的冲击,电视机这个曾经的客厅“霸主”一度失去了“主角光环”…

低概率Bug,研发敷衍说复现不到

测试工作中,经常会遇到一些低概率出现的问题,如果再是个严重问题,那测试人员的压力无疑是很大的,一方面是因为低概率难以复现,另一面则是来自项目组的压力。 如何在测试时减少此类问题的重复投入,我的思考如…

SAP ABAP 报表输出成 excel 统计图形 (RFC : GFW_PRES_SHOW_MULT)

SAP 预设了一个类型组 GFW ,做简单的excel图形输出 话不多说,直接上代码: *&---------------------------------------------------------------------* *& Report ZCYCLE057 *&----------------------------------------------…

C语言之指针详解

目录 地址 指针的定义和使用 数组与指针的区别与联系 字符串与指针的用法 C 中的 NULL 指针 指针的算术运算 指向指针的指针 传递指针给函数 从函数返回指针 在学习指针之前,我们先弄清楚一个概念: 地址 地址在计算机内存中是一个唯一的标识符…

debian 10 安装apache2 zabbix

nginx 可以略过,改为apache2 apt updateapt-get install nginx -ynginx -v nginx version: nginx/1.14.2mysql 安装参考linux debian10 安装mysql5.7_debian apt install mysql5.7-CSDN博客 Install and configure Zabbix for your platform a. Install Zabbix re…

Three.js 基础纹理贴图

本文简介 带尬猴,我嗨德育处主任 尽管 Three.js 文档已经比较详细了,但对于刚接触 Three.js 的工友来说,最麻烦的还是不懂如何组合。Three.js 的功能实在太多了,初学者很容易被大量的新概念冲晕。 本文主要讲解入门 Three.js 必…

LeetCode 热题 100 - 第1题:两数之和

LeetCode 热题 100 - 第1题:两数之和 原题题目理解普通的解题思路---遍历查找进阶的解题思路---哈希查找 原题 给定一个整数数组 nums和一个整数目标值target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。 你可以假设每种…

Python深度学习实战-基于class类搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 上篇文章介绍了用Squential搭建BP神经网络,Squential可以搭建出上层输出就是下层输入的顺序神经网络结构,无法搭出一些带有跳连的非顺序网络结构,这个时候我们可以选择类class搭建封装神经网络结构。 第一步:import ten…

【C++进阶之路】第三篇:二叉搜索树 kv模型

文章目录 一、二叉搜索树1.二叉搜索树概念2.二叉搜索树操作3.二叉搜索树的实现 二、二叉搜索树的应用1.kv模型2.kv模型的实现 三、 二叉搜索树的性能分析 一、二叉搜索树 1.二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性…

UG\NX二次开发 连接曲线、连结曲线 UF_CURVE_auto_join_curves

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 简介 UG\NX二次开发 连接曲线、连结曲线 UF_CURVE_auto_join_curves 效果 代码 #include "me.hpp" extern DllExport void ufusr(char* param, int* returnC…

使用Docker快速搭建服务器环境

简介 这篇文章也是方便自己记录搭建流程,服务器的购买啥的就不说了,最终目标就是在一个空白的Linux系统上,使用docker运行MySQL、TomcatJava、Nginx、Redis 的单机环境,以后方便自己快速的部署服务器。 安装Docker 首先需要安装…

Spring关于注解的使用

目录 一、使用注解开发的前提 1.1 配置注解扫描路径 二、使用注解创建对象 2.1 Controller(控制器储存) 2.2 Service(服务储存) 2.3 Repository(仓库储存) 2.4 Component(组件储存) …

Qt之彻底解决QSpinBox限定范围无效的问题

QSpinBox有个比较啃爹的问题,不管取值范围设置为多少,都能一直输入0,如下图所示: 当取值范围包含负数时,负号后也可以一直输入0,如下图所示: 还有就是当取值范围设置为10以上时,比如10~100,却可以输入1~9 虽然上述非法输入最终都未生效,当QSpinBox失去焦点时会显示为…

030-第三代软件开发-密码输入框

第三代软件开发-密码输入框 文章目录 第三代软件开发-密码输入框项目介绍密码输入框总结一下 关键字: Qt、 Qml、 echoMode、 TextInput、 Image 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Language…

【Ubuntu18.04】激光雷达与相机联合标定(Livox+HIKROBOT)(一)

LivoxHIKROBOT联合标定 引言1 海康机器人HIKROBOT SDK二次开发并封装ROS1.1 介绍1.2 安装MVS SDK1.3 封装ROS packge 2 览沃Livox SDK二次开发并封装ROS3 相机雷达联合标定3.1 环境配置3.1.1 安装依赖——PCL 安装3.1.2 安装依赖——Eigen 安装3.1.3 安装依赖——Ceres-solver …

数据结构与算法之矩阵: Leetcode 134. 螺旋矩阵 (Typescript版)

螺旋矩阵 https://leetcode.cn/problems/spiral-matrix/ 描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示…

RT-Thread 8. RT-Thread Studio arm-gcc使用10.2.1编译

1. gcc编译器下载 E:\RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages\ARM\GNU_Tools_for_ARM_Embedded_Processors2. 把5.4.1 改为5.4.11 再“全部构建”,提示错误 3. 把工具链版本改为10.2.1,再“全部构建”