版本控制系统Git学习笔记-Git基本知识介绍

目录

  • 前言
  • 一、版本控制系统
    • 1.1 什么是版本控制系统
    • 1.2 本地版本控制系统
    • 1.3 集中化的版本控制系统
    • 1.3 分布式版本控制系统
  • 二、Git简介
    • 2.1 数据处理方式
    • 2.2 几个特点
      • 2.2.1 几乎所有操作都是本地执行
      • 2.2.2 Git保证完整性
      • 2.2.3 Git一般只添加数据
    • 2.3 Git中文件状态
      • 2.3.1 三种文件状态
      • 2.3.2 文件存储区域
      • 2.3.3 状态转换
  • 三、安装
  • 四、初次安装的配置
    • 4.1 配置信息
    • 4.2 查看所有配置及所在的文件
    • 4.3 用户信息
    • 4.4 设置文本编辑器
    • 4.5 检查配置信息
      • 4.5.1 使用--list查看配置信息列表
      • 4.5.2 使用\<key\>获取某一项配置
    • 4.6 获取帮助
      • 4.6.1 使用help获取完整帮助文件
      • 4.6.2 使用-h直接打印简要帮助文件
    • 结语

老狗(最光阴)
蹉跎错,消磨过,最是光阴化浮沫。
网图,侵删!
网图,侵删!

前言

对于文件编辑,有个版本控制系统可以避免文件修改偏差,亦可以有一个回溯的机会。对于软件开发,更是需要一个专门的工具来管理代码,才能保障大量的代码修改得到有效管理。Git无疑是一个很好的工具。
在这里插入图片描述

一、版本控制系统

1.1 什么是版本控制系统

版本控制系统是一种文件各个版本变化内容的,以便查阅或者溯源的系统,一般具有历史记录查看,制定版本恢复等功能。
常见的如SVN,Git等都是,甚至用excel记录的文件变更记录也是。。

1.2 本地版本控制系统

本地版本控制系统就是将文件的变更信息保存到本地系统中。
基础的是将自己的不同版本进行重命名,改上不同的日期、版本或者备注信息,就是有个版本系统了。但是这样容易混淆,一不小心就有可能误删,覆盖意料之外的文件。
再进一步,自己用word或者excel记录的文件变更记录,然后将不同版本统一保存。这样处理可以避免文件的混乱,但是仍然无法避免误删,覆盖的问题。
后面开始有人开发本地版本控制系统。将文件变更差异记录到数据库中,然后需要的时候检出,示意图如下。
在这里插入图片描述

1.3 集中化的版本控制系统

本地版本控制系统,存在无法进行不同系统协作开发的问题。
集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS)应运而生。通过将文件版本信息保存到统一的一个服务器上来进行管理,然后不同人员通过客户端连接到服务器进行文档的修改。系统管理员亦可以进行权限控制,不同用户的管理等。
如 CVS、Subversion 以及 Perforce 等。
在这里插入图片描述
客户端通过网络访问服务器中的文件管理系统,本地仅保存当前版本。实现了文件的写作开发。
但是由于文件版本全部存储与服务器中,依赖于互联网进行访问,当服务宕机或者网络故障时,将无法进行提交或者获取版本信息等记录。

1.3 分布式版本控制系统

为了解决集中式版本控制系统依赖于网络的问题,分布式版本控制系统(Distributed Version Control System,简称 DVCS)横空出世。版本记录区分本地仓库和远程仓库。客户端将整个版本库完整的镜像下载到本地,这样子,即使式互联网或者服务器有故障,都可以通过任何一个本地仓库进行恢复。
在这里插入图片描述
每一个库都是一个完整的备份,这样需要暂用较多的内存控件,不过可操作性就很多,甚至可以做到多分子,多代码交互。

二、Git简介

诞生于2005年,它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。

2.1 数据处理方式

Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
在这里插入图片描述
如上图:

  • 每次变更存储的是文件;
  • 当文件没有变更时,设置一个链接指向旧版本的文件;

2.2 几个特点

2.2.1 几乎所有操作都是本地执行

Git的所有操作几乎是在本地进行的,在本地有完整的版本文件,所有的多做都可以在本地完成,而不用担心网络出现问题时无法提交。可以提交本地版本,然后当网络恢复之后再上传。

2.2.2 Git保证完整性

Git使用SHA-1算法来进行校验,所有的文件均有经过校验,有丢失或损坏都会被发现。
Git文件索引直接使用hash值,不使用文件名。

2.2.3 Git一般只添加数据

Git只往数据库中添加数据,很难删除数据,很难丢失数据。

2.3 Git中文件状态

2.3.1 三种文件状态

  • 已修改(modified)
    表示修改了文件,但还没保存到数据库中。
  • 已暂存(staged)
    已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  • 已提交(committed)
    已提交表示数据已经安全地保存在本地数据库中。

2.3.2 文件存储区域

Git 项目拥有三个阶段:工作区、暂存区以及 Git 仓库目录。
工作区(Working Directory)是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。

暂存(Staging Area)区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。

Git 仓库目录(.git directory(Repository))是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。

2.3.3 状态转换

在这里插入图片描述

三、安装

Git的安装可参考之前的文章:
Ubuntu Server搭建Git服务器
Linux学习笔记-Ubuntu系统下配置用户ssh只能访问git仓库
华为云云耀云服务器L实例评测|从零搭建Git服务器并配置ssh免密访问

Git for windows软件下载路径为:Git for windows
Windows版本下载路径:Download for Windows
Linux版本安装参考官网说明:Download for Linux and Unix

四、初次安装的配置

4.1 配置信息

Git可以通过自带的git config工具来管理配置信息。将会以文件的形式存储到电脑中,有三个不同的存储位置:

  1. /etc/gitconfig 文件:包含系统上每一个用户及他们仓库的通用配置,git config 时带上 --system 选项进行修改;
  2. ~/.gitconfig 或 ~/.config/git/config 文件:针对当前用户的配置,使用–global 选项读写此文件;
  3. 当前使用仓库的 Git 目录中的 config 文件( .git/config):针对该仓库,默认选项,可以使用–local 选项让读写此文件。

各个文件的优先级如下:
越具体的优先级越高。
在这里插入图片描述

4.2 查看所有配置及所在的文件

git config --list --show-origin

结果如下:
列出了所有的配置信息以及配置信息所保存的文件路径。

C:\Users\LJM> git config --list --show-origin
file:D:/Program Files/Git/etc/gitconfig diff.astextplain.textconv=astextplain
file:D:/Program Files/Git/etc/gitconfig filter.lfs.clean=git-lfs clean -- %f
file:D:/Program Files/Git/etc/gitconfig filter.lfs.smudge=git-lfs smudge -- %f
file:D:/Program Files/Git/etc/gitconfig filter.lfs.process=git-lfs filter-process
file:D:/Program Files/Git/etc/gitconfig filter.lfs.required=true
file:D:/Program Files/Git/etc/gitconfig http.sslbackend=openssl
file:D:/Program Files/Git/etc/gitconfig http.sslcainfo=D:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
file:D:/Program Files/Git/etc/gitconfig core.autocrlf=true
file:D:/Program Files/Git/etc/gitconfig core.fscache=true
file:D:/Program Files/Git/etc/gitconfig core.symlinks=false
file:D:/Program Files/Git/etc/gitconfig core.fsmonitor=true
file:D:/Program Files/Git/etc/gitconfig pull.rebase=false
file:D:/Program Files/Git/etc/gitconfig credential.helper=manager-core
file:D:/Program Files/Git/etc/gitconfig credential.https://dev.azure.com.usehttppath=true
file:D:/Program Files/Git/etc/gitconfig init.defaultbranch=master

4.3 用户信息

安装Git后配置用户信息,一般设置全局的用户名和邮箱,只需要设置一次,后续都会使用该信息进行提交:

git config --global user.name "具体的用户名(引号包裹)"
git config --global user.email 具体的邮箱信息(不需要引号)

若需要指定单独项目的邮箱和用户名,则使用不带“–global”参数的设置指令重新设置即可。

4.4 设置文本编辑器

未配置,Git 会使用操作系统默认的文本编辑器,若有需要可以通过core.editor参数设置成不同的编辑器。

git config --global core.editor 编辑器名称

4.5 检查配置信息

4.5.1 使用–list查看配置信息列表

git config --list

注: 此时可能会有重复的数据,因为不同文件可能存在一样的配置信息,重复是Git一般使用找的的最后一个配置。

C:\Users\LJM>git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=D:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
core.fsmonitor=true
pull.rebase=false
credential.helper=manager-core
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master

4.5.2 使用<key>获取某一项配置

示例:

git config user.name
C:\Users\LJM>git config user.name
Zero.Lin

4.6 获取帮助

4.6.1 使用help获取完整帮助文件

可以通过help指令获取git帮助,一下是三种获取帮助的指令:

# 指令1
git help <verb>
# 指令2
git <verb> --help
# 指令3
man git-<verb>

注: <verb> 是具体的功能模块指令。

示例:

git help config

直接打开了帮助网页了:
在这里插入图片描述

4.6.2 使用-h直接打印简要帮助文件

git <verb> -h

注: <verb> 是具体的功能模块指令。

示例:

C:\Users\LJM>git config -h
usage: git config [<options>]Config file location--global              use global config file--system              use system config file--local               use repository config file--worktree            use per-worktree config file-f, --file <file>     use given config file--blob <blob-id>      read config from given blob objectAction--get                 get value: name [value-pattern]--get-all             get all values: key [value-pattern]--get-regexp          get values for regexp: name-regex [value-pattern]--get-urlmatch        get value specific for the URL: section[.var] URL--replace-all         replace all matching variables: name value [value-pattern]--add                 add a new variable: name value--unset               remove a variable: name [value-pattern]--unset-all           remove all matches: name [value-pattern]--rename-section      rename section: old-name new-name--remove-section      remove a section: name-l, --list            list all--fixed-value         use string equality when comparing values to 'value-pattern'-e, --edit            open an editor--get-color           find the color configured: slot [default]--get-colorbool       find the color setting: slot [stdout-is-tty]Type-t, --type <type>     value is given this type--bool                value is "true" or "false"--int                 value is decimal number--bool-or-int         value is --bool or --int--bool-or-str         value is --bool or string--path                value is a path (file or directory name)--expiry-date         value is an expiry dateOther-z, --null            terminate values with NUL byte--name-only           show variable names only--includes            respect include directives on lookup--show-origin         show origin of config (file, standard input, blob, command line)--show-scope          show scope of config (worktree, local, global, system, command)--default <value>     with --get, use default value when missing entryC:\Users\LJM>

结语

本文介绍了Git的 一些发展历程和基本原理等信息,是Git的一些基本信息,是使用Git的基础。

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

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

相关文章

python networkx 网络展示的代码

1、创建一个无权重的图&#xff0c;并展示 edge_list.csv a,b,2 a,c,3 b,c,3 d,e,1 d,f,3 e,k,1 r,l,3 t,l,2import networkx as nx import matplotlib.pyplot as plt G nx.Graph() # 创建无向图 with open(edge_list.csv) as f:for line in f:edge line.strip().split(,)tr…

装修流程篇

装修流程 https://www.xiaohongshu.com/explore/627ba70d00000000210357b3 https://www.xiaohongshu.com/explore/63b6bc0c000000002203776f 半包装修流程 https://www.xiaohongshu.com/explore/64e5ea3b0000000003021711 户型图 效果 https://www.xiaohongshu.com/ex…

掌握大型语言模型(LLM)技术:推理优化

原文链接&#xff1a;Mastering LLM Techniques: Inference Optimization | NVIDIA Technical Blog 大模型相关技术文章已整理到Github仓库&#xff0c;欢迎start! 堆叠Transformer层以创建大型模型可以获得更好的准确性、few-shot学习能力&#xff0c;甚至在各种语言任务中具有…

三、Zookeeper数据模型

目录 1、Znode兼具文件和目录两种特点 2、Znode具有原子性操作

Ubuntu安装过程记录

软件准备 硬件 Acer电脑&#xff0c;AMD a6-440m芯片 64g优盘一个&#xff0c;实际就用了不到5g。 Ubuntu &#xff1a;官网 下载Ubuntu桌面系统 | Ubuntu 下载桌面版Ubuntu 22.04.3 LTS LTS属于稳定版 u盘系统盘制作软件 Rufus &#xff1a;Rufus - 轻松创建 USB 启动…

js模块化的应用!!!(前无古人,后无来者)

简介&#xff1a; 在 ES6 前&#xff0c; 实现模块化使用的是 RequireJS 或者 seaJS&#xff08;分别是基于 AMD 规范的模块化库&#xff0c; 和基于 CMD 规范的模块化库&#xff09;。 ES6 引入了模块化&#xff0c;其设计思想是在编译时就能确定模块的依赖关系&#xff0c…

万宾科技水环境综合治理监测系统的融合与应用

随着社会经济的快速发展&#xff0c;我国的水环境污染问题日益凸显&#xff0c;这不仅对生态环境造成了严重破坏&#xff0c;也严重威胁到人民群众的健康和生活质量。为了解决这一问题&#xff0c;城市生命线与水环境综合治理监测系统应运而生&#xff0c;二者的结合将为水环境…

gmid方法设计五管OTA二级远放

首先给出第一级是OTA&#xff0c;第二级是CS的二级运放电路图&#xff1a; gmid的设计方法可以根据GBW、Av、CL来进行电路设计&#xff0c;因此在设计电路之前需要以上的参数要求。 1、为了满足电路的相位裕度至少60&#xff0c;需要对GBW、主极点、零点进行分析。 首先给出其…

PMCW体制雷达系列文章(3) – PMCW雷达之匹配滤波

说明 PMCW体制下&#xff0c;雷达在接收端对接收的目标回波信号使用单频载波混频并低通滤波后&#xff0c;采集得到的是调制速率达ns量级的相位编码信号。在信号处理端&#xff0c;PMCW体制使用匹配滤波器(match filter)进行距离维的压缩&#xff0c;这是与FMCW体制雷达最核心的…

AntDesignBlazor示例——创建列表页

本示例是AntDesign Blazor的入门示例&#xff0c;在学习的同时分享出来&#xff0c;以供新手参考。 示例代码仓库&#xff1a;https://gitee.com/known/AntDesignDemo 1. 学习目标 使用Table组件创建列表页面使用DisplayName特性显示中文表头使用模板和Tag组件显示高温数据使…

EDW国际数据管理最新趋势(二)|信息供应链与数据

最近Data Fabric、Data Mesh、DataOps等话题非常火。其实&#xff0c;信息供应链谈的也是同样的东西&#xff0c;那就是如何将数据治理与数据集成整合在一起的解决方案。 下图虽然简单但涵盖了非常大的信息量。将4A架构进行了拆解&#xff0c;应用架构与技术架构主要是支撑业务…

R语言gWQS包在加权分位数和回归模型的应用

在流行病学研究中&#xff0c;相较于单一因素的暴露&#xff0c;多因素同时暴露的情况更为常见。传统模型在评价多因素联合暴露时存在数据维度高、多重共线性等问题. WQS 回归模型的基本原理是通过分位数间距及加权的方法&#xff0c;将多种研究因素的效应综合成为一个指数&…

openGauss学习笔记-146 openGauss 数据库运维-备份与恢复-配置文件的备份与恢复

文章目录 openGauss学习笔记-146 openGauss 数据库运维-备份与恢复-配置文件的备份与恢复146.1 背景信息146.2 前置条件146.3 操作步骤146.4 示例 openGauss学习笔记-146 openGauss 数据库运维-备份与恢复-配置文件的备份与恢复 146.1 背景信息 在openGauss使用过程中&#x…

[WP] ISCTF2023 Web 部分题解

圣杯战争!!! 反序列化伪协议读取 where_is_the_flag 环境变量根目录当前目录 绕进你的心里 利用正则最大回溯绕过 easy_website or select 用双写绕过 空格用/**/绕&#xff0c;报错注入 wafr codesystem(ca\t /f*) webinclude 扫描得到index.bak备份文件打开为加密的代码 写…

半导体划片机助力氧化铝陶瓷片切割:科技与工艺的完美结合

在当今半导体制造领域&#xff0c;氧化铝陶瓷片作为一种高性能、高可靠性的材料&#xff0c;被广泛应用于各种电子设备中。而半导体划片机的出现&#xff0c;则为氧化铝陶瓷片的切割提供了新的解决方案&#xff0c;实现了科技与工艺的完美结合。 氧化铝陶瓷片是一种以氧化铝为基…

Nginx实现(动静分离)

动静分离应该是听的次数较多的性能优化方案&#xff0c;那先思考一个问题&#xff1a;「「为什么需要做动静分离呢&#xff1f;它带来的好处是什么&#xff1f;」」 其实这个问题也并不难回答&#xff0c;当你搞懂了网站的本质后&#xff0c;自然就理解了动静分离的重要性。先来…

Opencv框选黑色字体进行替换(涉及知识点:selectROI,在控制台输入字体大小,颜色,内容替换所选择的区域)

import cv2 from PIL import Image,ImageDraw,ImageFont import numpy as npimg_path ../img/ img_clean_path ../img_clean/ name xiao_ben suf .pngimg cv2.imread(img_pathnamesuf) cv2.imshow(original, img)# 选择ROI roi cv2.selectROI(windowName"original&q…

服务器数据恢复—V7000存储raid5崩溃导致上层卷无法使用的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌V7000存储中有一组由几十块硬盘组建的raid5阵列。上层操作系统为windows server&#xff0c;NTFS分区。 服务器故障&#xff1a; 有一块硬盘出现故障离线&#xff0c;热备盘自动上线替换离线硬盘。在热备盘上线同步数据的过程&#xff0c…

高防IP是什么? 防护CC 对抗DDOS

什么是DDoS高防IP&#xff1f; DDoS&#xff08;分布式拒绝服务&#xff09;攻击是指攻击者通过利用大量恶意流量向目标服务器发送请求&#xff0c;导致目标服务器无法正常处理合法用户的请求。DDoS高防IP是一种通过技术手段来应对DDoS攻击的解决方案。它能够过滤掉恶意流量&a…

几何精度因子(Geometric Dilution Precision ,GDOP)

一、概念介绍 在卫星定位领域&#xff0c;精度衰减因子&#xff08;英语&#xff1a;Dilution of precision&#xff09;是一类衡量用户在进行GNSS测量时所具备的几何条件的定量指标&#xff0c;又简称为DOP值或精度因子。DOP值的大小取决各导航卫星在用户视场中的分布情况&am…