当前位置: 首页 > news >正文

【Git从入门到精通】Git入门

什么是版本控制

版本控制是一套系统,按时间记录某一个或一系列文件的变更,查看以前的特定版本。

使用版本控制系统,你可以将文件或者整个项目恢复到先前的状态,还可以对以前的文件进行对比。

本地版本控制系统

本地版本控制系统就是使用简单的数据库来保存文件的所有变更。

RCS是一个常用的VCS工具,在Mac OS操作系统中,只要你安装了开发者工具,就会包含一个rcs命名。RCS回我在磁盘上以一种特殊的格式保存补丁集(文件之间的差异)。通过叠加补丁来将文件恢复到某个历史状态。
在这里插入图片描述

集中式版本控制

为解决不同系统之间的协作,集中式版本控制系统应运而生。这类系统,都有一个包含文件所有修订版本的单一服务器,多个客户端可以从这个中心位置检出文件。

在这里插入图片描述

这种方案与本地版本控制系统相比有多方面的优势,比如。所有人都可以一定程度的掌握其他人的进展,管理员可以控制所有人的权限。同时维护一个集中的版本控制系统相比在每台客户机上维护要简单的多。

但是这种方案也有一定的缺陷,就是当服务器单点故障,会导致这期间所有人都不能协作或提交更改,如果中央数据库硬盘受损,且无备份则就一无所有。

分布式版本控制系统

为了解决集中式版本控制系统的问题,进而出现了分布式版本控制系统。对于分布式系统来说,客户端不仅仅是检出文件的最新快照,而是对代码仓库的完整镜像。这样子,不论是那个服务器发生故障,每一个客户端都可以使用本地的镜像对服务器进行修复。每一次检出都是对数据的一次完整备份。

在这里插入图片描述

除此之外,还可以很好的处理多个远程仓库,可以协同不同的项目。

Git

Git是由Linux开发社区在汲取BitKeeper使用过程中的经验教训的基础上,开发出了自己的版本控制系统。

具有一下的特点。

  • 速度快
  • 设计简洁
  • 对于非线性开发强有力的支持(多个并发分支)
  • 完全的分布式设计
  • 能够有效的处理大型的项目

Git基础

Git与其他版本控制系统最大的不同在于对待数据的方式。其他大多数版本控制系统以文件列表的方式存储信息。这类系统将其存储的信息视为一组文件以及对这些文件随时间作出的更改。

Git则是将数据视为一个微型的文件系统的一组快照。每次提交或在Git中保存项目的状态时,Git会抓取一张所有文件当前状态的快照,然后存储一个指向该快照的引用。

Git的完整性

Git的完整性是通过检验和来保证的,他所采用的校验和机制是SHA-1散列。Git中的所有数据在存储前都会执行校验和计算,随后以校验和来引用对应的数据。

Git通常只增加数据

在Git中通常都是忘Git数据库中添加数据,很难执行难以撤销的操作或者将数据删除。

三种状态(已修改、已暂存、已提交)

  • 已修改:表示改动了文件,但是还未保存到Git数据库
  • 已暂存:表示将对修改的文件的当前版本做出了标识并将其加入下一次要提交的快照中
  • 已提交:表示数据已经被安全的保存入本地数据库中了

在这里插入图片描述

  • 工作目录:是项目的本地目录
  • 暂存区:是一个文件,一般位于Git目录中,保存了下次要提交的内容的相关信息。将修改的文件暂存进暂存区,这个地方就相当于一个临时的中转站。
  • 仓库:是保存项目元数据和对象数据库的地方。当把暂存区的数据进行提交,就是将数据保存进仓库。

Git的基本工作流如下:

  1. 修改工作目录中的文件。
  2. 将修改的文件暂存进暂存区,生成快照。
  3. 将暂存区的文件进行提交,将快照永久的保存进Git目录中。

Git的安装

在https://git-scm.com/downloads进行下载安装即可

Git首次配置

用户身份

安装完成后首先我们就要设置用户名和电子邮箱地址。Git的每次提交都会用到这些信息,当然Git不会验证这些东西的真实性。设置命令如下:

git config --global user.name 'myname'

git config --global user.email ***@163.com

如果传入了--global选项 则后续的项目都会使用这个用户名和地址,如果你在别的项目不想使用当前用户名和邮箱,可以使用不带--global的命令。

检查个人设置

git config --list来查看所有的设置,如下:
在这里插入图片描述

你也可以查看某个特定的值,例如:
在这里插入图片描述

获取帮助

你可以输入git --help来获取其他命令的信息

在这里插入图片描述

当然你可以通过命令来获取关于Git的任何命令的帮助页面,例如:

当去输入 git help config就会跳转到相关的页面

在这里插入图片描述

当然你可以通过命令来获取关于Git的任何命令的帮助页面,例如:

当去输入 git help config就会跳转到相关的页面

[外链图片转存中…(img-uxIgPoOl-1678625091084)]

当然这是本地文件,不需要网络也可以查询。

相关文章:

【Git从入门到精通】Git入门

什么是版本控制 版本控制是一套系统,按时间记录某一个或一系列文件的变更,查看以前的特定版本。 使用版本控制系统,你可以将文件或者整个项目恢复到先前的状态,还可以对以前的文件进行对比。 本地版本控制系统 本地版本控制系…...

软件测试18

在桌面上打开终端窗口, 执行如下操作: 查看当前系统中开放的端口有哪些查看哪个程序正在使用 3306 端口(需要 root 用户权限) 注意: 1.某些端口号具备固定用途: 例如: 远程访问常用端口号:22 默认情况下是mysql使用的端口号&…...

C语言实现快速排序(hoare法、挖坑法、前后指针法与非递归实现)——不看后悔系列

目录 1. hoare法 方法与步骤 代码实现 2. 挖坑法 方法与步骤 代码实现 3. 前后指针法 方法与步骤 代码实现 4. 快速排序的缺点与优化 1.快速排序的缺点 2.快速排序的优化 ① 三数取中法选 key 代码实现 ② 小区间优化 代码实现 5. 快速排序的非递归实现 附录…...

如何为系统可靠性的量化提供依据

SLA 即 Service Level Agreement,也就是服务等级协议,它指的是系统服务提供者(Provider)对客户(Customer)的一个服务承诺。 而 SLO 就是 SLA 的具体目标管理办法,它由一系列相关的指标 SLI &am…...

量化投资中的因子是什么?因子是如何分类的,包括哪些?

因子就是对个股有解释的因素。因子的种类很多,不同类别的因子从不同的维度对个股收益进行解释。比如基本面因子的数据来源方面有很大一部分是财务报表,从估值、成长、盈利能力等多个方面对股票收益进行解释。量价因子是围绕价格、成交量等技术指标构建的…...

力扣-修复表中的名字

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1667. 修复表中的名字二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他…...

【博客633】linux vxlan设备工作原理

linux vxlan设备工作原理 vxlan处理包的原理:以k8s cni flannel组件创建的vxlan设备为例 1、k8s cni组件创建flannel设备flannel.1,且这个设备为vxlan类型的设备 root10.10.10.12:/home/ubuntu# ethtool -i flannel.1 driver: vxlan version: 0.1 fi…...

3.12学习周报

文章目录前言文献阅读摘要简介方法介绍讨论结论相关性分析总结前言 本周阅读文献《Streamflow and rainfall forecasting by two long short-term memory-based models》,文献主要提出两种基于长短时记忆网络的混合模型用于对水流量和降雨量进行预测。小波-LSTM&am…...

电力电子中逐波限流控制以及dsp实现

逐波限流是指在电力系统运行中,对电力设备进行电流保护的一种措施。它的实现方式是通过对电力系统的电流进行逐波监测和控制,每一波电流都可以独立地进行限制,从而保护电力系统设备不受过载损坏或短路故障的影响。 逐波限流的作用是提高电力…...

【数据结构】 顺序表

文章目录1 线性表2 顺序表2.1 概念及结构2.2 接口实现2.3 数组相关面试题2.4 顺序表的问题与思考1 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序…...

Elasticsearch 集群规划- 单台机器核心数计算公式

在做集群规划的时候,到底需要给集群的每个节点多少个核心数?这个问题一直困扰了我很久。最近一段时间做千亿数据,PB存储量集群规划的时候,突然想明白了这件事,大致可以用一个公式来计算!我觉得这是一个非常…...

Tesla都使用什么编程语言?

作者 | 初光 出品 | 车端 备注 | 转载请阅读文中版权声明 知圈 | 进“汽车电子与AutoSAR开发”群,请加微“cloud2sunshine” 总目录链接>> AutoSAR入门和实战系列总目录 带着对更美好未来的愿景,特斯拉不仅成为有史以来最有价值的汽车公司&…...

1143. 最长公共子序列——【Leetcode每日刷题】

1143. 最长公共子序列 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些…...

【并发基础】线程的通知与等待:obj.wait()、obj.notify()、obj.notifyAll()详解

目录 〇、先总结一下这三个方法带来的Java线程状态变化 一、obj.wait() 1.1 作用 1.2 使用前需要持有线程共享对象的锁 1.3 使用技巧 二、obj.notify(All)() 1.1 notify() 方法 1.1.1 调用notify()或notifyAll()不会释放线程的锁 1.2 notifyAll() 方法 1.3 使用技巧 三、使用实…...

css黏性定位-实现商城的分类滚动的标题吸附

传统的黏性定位是使用js通过计算高度来实现的,当元素滚动到一定位置时吸附在当前位置。下面我们通过css来实现黏性定位功能。 黏性定位 黏性定位目前主流的浏览器已经全部支持,顾名思义,黏性定位具有吸附的效果,其实它是positio…...

@Component和@bean注解在容器中创建实例区别

Component和Bean的区别 在Spring Boot中,Component注解和Bean注解都可以用于创建bean。它们的主要区别在于它们的作用范围和创建方式。 Component注解是一种通用的注解,可以用于标注任何类。被标注的类将被Spring容器自动扫描并创建为一个bean。这个bea…...

不写注释就是垃圾

最近Linux6.2出来了增加了很多新的东西,有看点的是,Linux确实要可以在Apple M1上面运行了,这应该是一个很大的新闻,如果有这么稳定的硬件支持,那对于Linux来说相当于又打下了一大片的江山。其中关于Linux6.2的特性罗列…...

深信服一面

1.C变量存储在哪里,生命周期是怎样的 2.静态成员变量和成员函数的特性,在哪里用过吗 3.new和delete是什么,和malloc和free对比有啥优势 4.new能不能重载,重载new有什么用 5.多态是怎么实现的,有什么优势和目的 6.…...

【C语言】深度理解指针(中)

前言✈上回说到,我们学习了一些与指针相关的数据类型,如指针数组,数组指针,函数指针等等,我们还学习了转移表的基本概念,学会了如何利用转移表来实现一个简易计算器。详情请点击传送门:【C语言】…...

步进电机运动八大算法

引导一种模块化(Module)设计思想,将传统步进电机的控制器(controller)、驱动器(Driver)、运动算法(Arithmetic)三合一。 对比国内外步进电机驱动原理和已有工作,结合各种硬件特性,改进或实现了可实际移植并用于步进电机控制八大算法。本产品…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...

第22节 Node.js JXcore 打包

Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本&#xff0c;基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...