Git初始

一)git的介绍:

1)假设现在有一个文档,你的老板要求你针对于这份文件进行修改,进行完成的修改的版本是版本1,接下来是文档2,修改完文档2以后,接下来老板还不同意,于是又有了文档三,文档四,但是此时老板说第一个版本的文档是最好的,但是此时最终文档保存的内容是文档四最终的内容,此时想要拿到第一次文档修改的内容是无法拿到的,此时这一份工作就无法完成了,这种情况是针对于一份文档做多次的修改,我们无法针对于不同的文档进行管理,我无法拿到第一次修改的内容,也无法拿到第二次,第三次修改的内容;

2)此时第二次的时候,我的老板有要求再来修改一份文档,此时我们将第一次修改完成的文档是设计文档V1,此时设计文档V1完成以后,老板说你的文档不靠谱,此时你再去给我修改,但是此时我会把文档V1复制一份,此时就得到了另一款设计文档,就是设计文档V2,此时我们手里面就有了两个版本的文档,此时无论是第一个版本的文档还是第二个版本的文档我都有,此时果然当文档2上传的时候老板此时还不满意,我就针对于这个文档反反复复的进行修改,此时已经把设计文档更新到了文档V5,此时老板说你修改的这些文档还不如你当初修改的第一份文档,此时我就把第一份文档开开心心的交给他了,对一个文档进行多个版本的管理这是仅仅在文档内容比较少的情况下,但是如果文档升级版本过多,此时维护的成本也越来越高,是很有挑战的,各自的版本的修改的内容还是什么还知道吗?

3)版本控制器就由此诞生了, 可以记录每一次代码的改动和版本的迭代都可以记录起来,记录每一次的修改的内容以及版本迭代的一个管理系统,git就是目前最主流的版本控制器,git可以帮助我们控制电脑上所有格式的文件或者是文档,对于开发人员来说,可以管理软件开发中的源代码文件

二)安装git

1)查看git是否已经被安装:git --version

2)卸载git:sudo yum remove git -y

3)安装git:sudo yum install git -y

三)创建git的本地仓库:

1)git是一个版本控制系统也是一个版本控制器,如果记录每一次修改的内容和版本迭代的一些内容,虽然可以使用git追踪管理,但是这些文件内容不可以存放在电脑上面的任意位置,如果这样的话git就不能追踪管理了,如果想要管理这些文件,就需要把这些文件放到仓库中

2)只有在仓库中的文件才能被git追踪并且管理,所以先创建一个文件目录,然后尝试使用命令来创建仓库,git init命令就可以在当前文件目录下创建一个本地仓库,点击回车即可

3)由此可以看出当前目录gitcode下面有叫做.git的目录,这是执行git init命令以后新增的

4)使用tree命令,可以看到在.git/隐藏目录下面有很多东西,这个隐藏目录是用来追踪和管理仓库的,注意不要修改这个隐藏下面的内容,否则会把这个git仓库给破坏掉

5)最后在gitcode目录下面配置name选项和email选项,如果不配置这两个属性,那么将来再进行操作本地文件的时候就会出现问题,下面是命令

git config:git config user.name+"自己的自定义字符串" 

查看所有已经被设置过的键值对:git config -l

删除已经的键值对:git  config --unset  user.name,想把name删除掉

我们在服务器上面不止可以配置一个本地仓库,可以创建多个本地仓库

git config --global  user.name "XX",这里面的global表示在当前的服务器上的所有本地git仓库都进行设置生效

git config --global unset --set

四)认识工作区,暂缓区,版本库

在当前的情况下,在gitcode目录下创建一个readMe目录,但是Git是不能管理readMe文件的

 .git是仓库,就是版本库(仓库),但是readMe文件本身并没有存在于本地仓库里面

执行tree .git下面的目录如下:是不可以在.git下直接添加文件的

工作区:就是在电脑上写代码或者文件的目录,咱们的git是不可以直接管理工作区的文件的

.git目录:版本库

1)add命令:执行add命令以后会将工作区中的新增,修改删除的内容保存到版本库的暂存区中

2)commit命令:将暂存区的内容存放到master分支下里面也是存放的是修改文件的内容的索引,只有执行commit操作以后才算真正的写入了一个版本库

3)对象库objects:每一次执行add命令以后,修改的工作区的内容会写入到对象库中的一个新的git对象中,这就相当于是维护了工作区的版本,就做好了对于一个文件版本的管理,对应的是.git目录下面的objects目录;

从head指针开始,就可以拿到所有文件修改的内容,就可以拿到master的分支,对应的是.git目录下面的head目录

4)暂缓区:英⽂index,⼀般存放在.git⽬录下的/index⽂件.git/index中,把暂存区有时也叫作索引

5)版本库:也被称之为是仓库,工作区有一个隐藏目录.git,他不算作是工作区,而是git的版本库这个版本库里面的所有文件都是可以被git管理起来的,每一个文件的修改删除,git都是可以追踪的,以便任何时候都是可以追踪历史,或者在将来某一个时刻可以被还原

五)commit add命令

git add readMe,如果要是针对于readMe文件进行了修改,就把readMe文件的修改放在暂缓区中

git add .如果要是针对于工作区中的任意文件进行了修改,就把任意文件的修改放在暂缓区中

git commit -m "描述信息",可以写添加了第一个文件

git log的作用就是看出最近的提交的信息,每一次提交都是随机生成一个ID

或者使用git log --pretty=oneline

查看.git目录下面的HEAD目录下面的内容

cat ./.git/HEAD可以直接看到HEAD指针直接指向MASTER的分支

下面来看一下master中的内容,这里存放的就是最新的提交的修改ID

现在左边执行 cat ./.git/refs/heads/master,然后根据打印出来的ID来找到objects中的git对象

最后通过git cat-file -p+上一步查询出来的ID

可以在最底层看到提交版本时候的描述信息,这个是自己添加的,还包括上一次提交的commitID,还包括是谁修改的版本信息,最上面的tree后面的ID很奇怪,我们打印一下:

这里面的打印出来的内容就是我们在此次版本中新增的文件

我们继续打印一下blob后面的ID的内容:打印出来就是此次对于文件的修改操作,比如说新增加的文件内容,这都会被git记录下来,objects中存放的就是已经被修改的对象库中;

总结:index中存放的就是add后新增的内容(真对于文件来说),master存放的就是最新提交的commitID

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

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

相关文章

Ubuntu 常用命令之 less 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 less命令是一个在Unix和Unix-like系统中用于查看文件内容的命令行工具。与more命令相比,less命令提供了更多的功能和灵活性,例如向前和向后滚动查看文件,搜索文本,查看长行等。 les…

算法和算法分析

一个问题抽象为一个抽象数据类型后,仅是形式上的抽象定义,还没有达到问题解决的目的,要实现这个目标,就要吧抽象的变成具体的,即抽象数据类型再计算机上实现,变为一个能用的具体的数据类型! …

Unity | Shader基础知识(第八集:案例<漫反射材质球>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、什么是漫反射材质球 三、 漫反射进化史 1 三种算法结果的区别 2 具体算法 2.1 兰伯特逐顶点算法 a.本小节使用的unity自带结构体。 b.兰伯特逐顶点算法公式 c.代码实现——兰伯特逐顶点算法 2.2 代码实现——兰伯特逐…

如何开启In-sensor zoom 功能

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、In-sensor zoom 概述二、如何开启 In-sensor zoom2.1 开启 camxsettings.xml setting2.2 多摄像头,需要添加特殊的逻辑2.3 在 MetaTran…

记录下IAP升级将APP程序修改正常模式下载失败 No Algorithm found for: 08000000H - 08008FFFH

移植发现问题: No Algorithm found for: 08000000H - 08008FFFH 今天在调试程序时,需要把钱同事程序的APP修改成成正常下载就可以用的程序,工程的地址复位也把APP的偏移地址去掉,理论上这样就OK了 偏移地址设置也屏蔽了 STLINK下…

美摄AE模板插件工具,将美摄SDK和AE极致融合

视频内容已经成为企业宣传和品牌建设的重要手段,为了满足企业对于高质量视频制作的需求,美摄科技推出了一款创新性的插件工具——美摄AE模板插件工具。这款工具将美摄SDK能力和Adobe After Effects极致融合,为企业提供了一种快速制作和转化美…

vue 历程记

目录 前言一、源码优化1、vue3.x 采用 monorep 的理念来管理源码2、vue3.x 源码采用 TypeScript 开发 二、性能优化1、减少源码的体积2、数据劫持优化3、编译优化(1)、编译粒度的优化 三、语法 API 的优化1、优化了编码的逻辑组织2、优化了代码的逻辑复用…

Java学习系列(四)

1.Scanner类 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。 import java.util.Scanner; public class ScannerDemo {public static void main(String[] args) {Scanner scan new Scanner(System.in);// 从键盘接收数据// next…

css学习笔记2

css学习笔记2 CSS三大特性1.三大特性1.1层叠性1.2继承性1.3优先级 2.颜色的表示2.1表示方式一:颜色名2.2表示方式二:rgb或rgba2.3表示方式三:HEX或HEXA2.4表示方式四:HSL或HSLA CSS三大特性 1.三大特性 1.1层叠性 概念&#xff…

SLAM算法与工程实践——SLAM基本库的安装与使用(6):g2o优化库(1)g2o库的安装

SLAM算法与工程实践系列文章 下面是SLAM算法与工程实践系列文章的总链接,本人发表这个系列的文章链接均收录于此 SLAM算法与工程实践系列文章链接 下面是专栏地址: SLAM算法与工程实践系列专栏 文章目录 SLAM算法与工程实践系列文章SLAM算法与工程实践…

如何提高React组件的渲染效率的?在React中如何避免不必要的render?

面试官:说说你是如何提高组件的渲染效率的?在React中如何避免不必要的render? 一、是什么 react 基于虚拟 DOM 和高效 Diff 算法的完美配合,实现了对 DOM 最小粒度的更新,大多数情况下,React 对 DOM 的渲染…

debian10安装配置vim+gtags

sudo apt install global gtags --version gtags //生成gtag gtags-cscope //查看gtags gtags与leaderf配合使用 参考: 【VIM】【LeaderF】【Gtags】打造全定制化的IDE开发环境! - 知乎

Apache Superset如何实现无公网ip实时远程访问本地数据【内网穿透】

文章目录 前言1. 使用Docker部署Apache Superset1.1 第一步安装docker 、docker compose1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透,实现公网访问3. 设置固定连接公网地址 前言 Superset是一款由中国知名科技公司开源的“现代化的…

生物信息学R分析工具包ggkegg的详细使用方法

ggkegg介绍 ggkegg 是一个用于生物信息学研究的工具,可以用于分析和解释基因组学数据,并将其与已知的KEGG数据库进行比较。ggkegg 是从 KEGG 获取信息并使用 ggplot2 和 ggraph 进行解析、分析和可视化的工具包,结合其他使用 KEGG 进行生物功…

HAproxy做七层代理+keepalived高可用,实现动静分离,由nginx处理静态页面,tomcat处理动态页面

目录 一、三种软负载均衡器的区别 关于三种负载均衡器的性能对比: 关于三种负载均衡器的代理类型对比: 关于三种负载均衡器的健康检查对比: 二、haproxy的8中负载均衡调度算法 haproxy的会话保持的方式 haproxy的配置文件学习 三、实操…

Python中导入Excel数据:全面解析与实践

目录 一、引言 二、选择合适的库 三、读取Excel文件 四、处理数据 五、错误处理和异常处理 1、使用try-except语句捕获和处理异常: 2、使用try-except语句捕获和处理特定异常类型: 六、性能优化 七、数据验证 1、检查缺失值: 2、检…

如何解决idea创建版本时只有Java21和Java17选项

idea如果版本高了就会出现在创建Springboot项目时只有Java21和Java17选项 选择jdk1.8的时候很可能出现下图报错,这是因为版本jdk1.8与Java17不兼容 解决办法一般有三种,这里列举两种 1、替换下载数据源 可以将https://start.spring.io/ 替换成 https:…

科普-电子合同签署,这三步不能忽视

关于电子合同,许多人认为我自己直接内部发送邮件/传真等发送电子版合同或者我自己创建一个电子合同平台,这种怎么不属于电子合同呢? 在这里给大家科普一个知识点:签电子合同,需要经过这“三个步骤”。 根据《电子签名…

31. 深度学习进阶 - 全连接层及网络结构

Hi,你好。我是茶桁。 之前的课程咱们学习了卷积以及池化,那到底卷积是如何构成卷积神经网络的呢?我们这节课来好好讲一下。 全连接层 整个卷积的运算就是经过卷积,再经过pooling,再经过卷积。会把这个图形变的很小。…

案例系列:营销模型_客户细分_无监督聚类

案例系列:营销模型_客户细分_无监督聚类 import numpy as np # 线性代数库 import pandas as pd # 数据处理库,CSV文件的输入输出(例如pd.read_csv)/kaggle/input/customer-personality-analysis/marketing_campaign.csv在这个项…