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

news2024/11/27 21:41:50

目录

  • 前言
  • 一、版本控制系统
    • 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 object

Action
    --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 date

Other
    -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 entry


C:\Users\LJM>

结语

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

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

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

相关文章

【UE】中文字体 发光描边材质

效果 步骤 1. 先将我们电脑中存放在“C:\Windows\Fonts”路径下的字体导入UE 点击“全部选是” 导入成功后如下 2. 打开导入的“SIMSUN_Font”&#xff0c;将字体缓存类型设置为“离线” 点击“是” 这里我选择&#xff1a;宋体-常规-20 展开细节面板中的导入选项 勾选“使用距…

教你用AI做艺术字,2个月,在小红书接广赚7200元

有段时间没给大家拆账号和完整地上教程了&#xff01;今天就来安排~如何用AI写艺术字&#xff0c;并且在小红薯实现商单BIANXIAN的系统教程.账号很多&#xff0c;我就拿这个AI艺术字搭配治愈系文案来展示下&#xff0c;这个比较有意思&#xff0c;艺术字治愈文案&#xff0c;视…

linux命令解析神器

遥想刚迈入职场时&#xff08;当时的工作环境&#xff0c;需要频繁使用linux&#xff0c;登录设备后台操作&#xff09;&#xff0c;偶然间听到我的领导和其他同事说 &#xff1a;“XXX&#xff0c;多学一学。大佬们太厉害了&#xff0c;太低级的问题不要直接问&#xff0c;你登…

直播带货“变天”,谦寻能否借AI“升咖”?

文 | 螳螂观察 作者 | 青月 直播带货&#xff0c;已经开始由过去的卷低价、卷GMV&#xff0c;渐渐演变为卷科技。 北京理工大学融合发展研究基地副主任尹西明就曾表示&#xff0c;AI不仅能够以更便捷、实时和多模态的交互来帮助供给端更高效地感知、获取并预测直播用户的偏好…

修改二进制程序的rpath和interpreter, 实现“高版本gcc编译出的程序在低版本glibc机器上运行“实验记录

编译环境&#xff1a; ubuntu20.04 gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 g (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 运行环境&#xff1a; centos7.9 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) g (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44) 验证源文件 main.cpp: #inc…

Android 实现环形进度条

一、项目需求 项目中常常需要用到进度条&#xff0c;很简单&#xff0c;这儿做一个简单的总结和实现 二、实现控件 ProgressBar 三、实现代码 1、水平的进度条 xml布局代码&#xff1a; <ProgressBarandroid:id"id/rocketProgressBar"style"style/Wid…

ChatGPT生成的一些有趣的文件管理用python小程序

1. 查找当前位置中的所有文件夹&#xff0c;并在每个文件夹中增加一个名为 abc 的新文件夹 import osdef create_abc_directories(root_dir.):# 获取当前目录下的所有目录subdirectories [d for d in os.listdir(root_dir) if os.path.isdir(os.path.join(root_dir, d))]# 在…

如何在Rocky Linux中安装nmon

一、环境基础 [rootlocalhost nmon16d]# cat /etc/redhat-release Rocky Linux release 9.2 (Blue Onyx) [rootlocalhost nmon16d]# uname -r 5.14.0-284.11.1.el9_2.x86_64 [rootlocalhost nmon16d]# 二、安装步骤 在Rocky Linux和AlmaLinux等基于RHEL 的发行版上&#xff…

具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉

随着人工智能的普及和万物互联&#xff0c;vr虚拟技术备受关注&#xff0c;为了更加真实的虚拟现实交互体验&#xff0c;动捕数据手套的使用逐渐普及&#xff0c;vr手套可以实时采集各手指关节运动数据&#xff0c;使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…

AMIS【部署 01】amis前端低代码框架可视化编辑器amis-editor本地部署流程

amis-editor本地部署流程 1.amis-editor是什么1.1 amis是什么1.2 amis-editor是什么 2.amis-editor本地部署2.1 准备阶段2.2 源码修改2.3 构建项目2.4 nginx配置2.5 启动nginx 3.总结 官网仅贴出了本地运行这个项目的步骤&#xff1a; # 1.安装依赖 npm i # 2.等编译完成后本地…

uniapp 页面回退逻辑梳理

在uniapp 开发项目&#xff0c;有时在同一个页面 回退 会有不同的要求&#xff0c;无法通用的用navigaBack去解决 因此 这时候 就可以使用onBackPress方法&#xff0c;根据不同的参数条件来控制回退的页面

数据结构:哈希表讲解

哈希表 1.哈希概念2.通过关键码确定存储位置2.1哈希方法2.2直接定址法2.3除留余数法 3.哈希冲突概念4.解决哈希冲突4.1闭散列4.1.1概念4.1.2哈希表扩容4.1.3存储位置的状态4.1.4关于键值类型4.1.5代码实现 4.2开散列4.2.1概念4.2.2哈希表扩容4.2.3代码实现 4.3开闭散列的对比 1…

JavaScript中的异步处理方法

JavaScript中的异步处理是开发者在日常开发过程中必须面对的一个重要问题。由于JavaScript是单线程的&#xff0c;因此对于一些可能需要长时间执行的操作&#xff0c;如网络请求、IO操作等&#xff0c;如果采用同步的方式&#xff0c;可能会导致应用程序的阻塞&#xff0c;降低…

常见的AI安全风险(数据投毒、后门攻击、对抗样本攻击、模型窃取攻击等)

文章目录 数据投毒&#xff08;Data Poisoning&#xff09;后门攻击&#xff08;Backdoor Attacks&#xff09;对抗样本攻击&#xff08;Adversarial Examples&#xff09;模型窃取攻击&#xff08;Model Extraction Attacks&#xff09;参考资料 数据投毒&#xff08;Data Poi…

Parasoft:正确的静态应用程序安全测试 (SAST) 解决方案

随着软件开发从Web应用扩展到工业物联网&#xff08;IIoT&#xff09;设备&#xff0c;静态应用安全测试&#xff08;SAST&#xff09;越来越有必要从根本上帮助确保软件的功能安全。根据 Forrester Research的研究&#xff0c;网络攻击是近两年安全漏洞的主要来源。因此&#…

【Python基础】协程(迭代器、生成器、协程、gevent介绍)

&#x1f308;欢迎来到Python专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mys…

Chromium 下载

下载地址&#xff1a; ##################################### # chromium 下载 https://registry.npmmirror.com/binary.html?pathchromium-browser-snapshots/Win/ # chromium 下载 https://registry.npmmirror.com/binary.html?pathchrome-for-testing/ # chromium 下…

SQL Server :关系模式的键码与闭包计算

一、键码的定义 首先我们给出 键码的定义 如下 定义&#xff1a;已知 R<U,F> 是属性集 U 的关系模式&#xff0c;F是属性集 U 上的一组函数依赖&#xff0c;设 K 为 R<U,F> 中的属性或属性组合&#xff0c;若K ⇒ U - K 且 K 的任何真子集都不能决定 U&#xff0c…

c语言-数据在内存中的存储

文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断3. 浮点数在内存中的存储 1. 整数在内存中的存储 1.整数的2进制表示方法有三种&#xff0c;即 原码、反码和补码 2. 三种表示方法均有符号位和数值位两部分&#xff0c;符号位都是用0表示“正”&#xff0c;用1表示“…

【开发实践】使用jstree实现文件结构目录树

一、需求分析 因开发系统的需要&#xff0c;维护服务端导出文件的目录结构。因此&#xff0c;需要利用jstree&#xff0c;实现前端对文件结构目录的展示。 【预期效果】&#xff1a; 二、需求实现 【项目准备】&#xff1a; jstree在线文档&#xff1a;jstree在线文档地址 …