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

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

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

相关文章

Java 干净的Stream,Lambda代码写法

目录 一. 前期准备1.1 各种实体类1.2 生成List<CommonUser>的方法1.3 需求 二. 难以阅读的Lambda表达式三. 干净的Lambda表达式四. 效果 一. 前期准备 1.1 各种实体类 ⏹Address实体类&#xff0c;用来存储地址 import lombok.Builder; import lombok.Getter;Builder …

力扣刷题记录(17)LeetCode:416、1049

416. 分割等和子集 可以将该问题看成是一个背包问题。背包的容量就是nums数组和的一半。我们如果能够将背包装满就意味着可以将数组分割成两个元素和相等的子集。 1.确定dp[i]的含义 索引i表示背包的容量&#xff0c;dp[i]表示当前容量能够装载的最大值 2.确定动态转移方程 …

Uniapp + Vue3 封装请求工具挂载全局

新建request.js工具类 const http {// baseUrl 地址baseUrl: http://localhost:8080,// 请求方法request(config) {// config&#xff1a;请求配置对象&#xff0c;具体参照uniapp文档config beforeRequest(config)// 请求地址拼接config.url this.baseUrl config.url// 异…

Linux-----14、vim

# vim Linux平台下的文本编辑器&#xff1a; emacs、nano、gedit、vi、vim vi&#xff08;visual editor&#xff09;编辑器通常被简称为vi&#xff0c;它是Linux和Unix系统上最基本的文本编辑器&#xff0c;类似于Windows 系统下的记事本。学会它后&#xff0c;我们将在Linu…

Vue数组变更方法和替换方法

一、可以引起UI界面变化 Vue 将被侦听的数组的变更方法进行了包裹&#xff0c;所以它们也将会触发视图更新。这些被包裹过的方法包括&#xff1a; push()pop()shift()unshift()splice()sort()reverse() 以上七个数组都会改变原数组&#xff0c;下面来分别讲解它们的区别&…

【Unity】【WebRTC】如何用Unity而不是浏览器接收远程画面

【背景】 之前几篇我们讨论了如何设置信令服务器&#xff0c;如何发送画面给远端以及如何用浏览器查看同步画面&#xff0c;今天来讨论如何实现Unity内部接收画面。 看本篇之前请先看过之前将web服务器设置和基本远程画面功能的几篇博文。&#xff08;同专栏下查看&#xff09…

如何通过宝塔面板搭建一个MySQL数据库服务并实现无公网ip远程访问?

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

python-dlib实现人脸提取和分割

效果 → 参考资料和资源 GitHub - Onwaier/SegfaceAndAlignByDlib: 用dlib实现脸部分割和人脸对齐 shape_predictor_68_face_landmarks.dat 下载地址_shape_predictor_68_face_landmarks.dat下载-CSDN博客 未运行的参考资料 dlib实现脸部分割与人脸对齐 - 知乎 py代码 &…

【Lidar】Open3D点云DBSCAN聚类算法:基于密度的点云聚类(单木分割)附Python代码

1 DBSCAN算法介绍 DBSCAN聚类算法是一种基于密度的聚类算法&#xff0c;全称为“基于密度的带有噪声的空间聚类应用”&#xff0c;英文名称为Density-Based Spatial Clustering of Applications with Noise。 DBSCAN聚类算法能够发现任意形状的类别&#xff0c;并且对噪音数据具…

全网最全pytest大型攻略,单元测试学这就够了!

pytest 是一款以python为开发语言的第三方测试&#xff0c;主要特点如下&#xff1a; 比自带的 unittest 更简洁高效&#xff0c;兼容 unittest框架支持参数化可以更精确的控制要测试的测试用例丰富的插件&#xff0c;已有300多个各种各样的插件&#xff0c;也可自定义扩展&am…

数字化时代的智能支持:亚马逊云科技轻量应用服务器技术领先

轻量应用服务器是一种简化运维、门槛低的弹性服务器&#xff0c;它的"轻"主要体现在几个方面&#xff1a;开箱即用、应用优质、上手简洁、投入划算、运维简便以及稳定可靠。相较于普通的云服务器&#xff0c;轻量应用服务器简化了云服务的操作难度、使用和管理流程&a…

mysql:查询服务器当前打开的连接数量

使用命令show global status like Threads_connected;可以查询mysql服务器当前打开的连接数量。 例如&#xff0c;查询如下&#xff1a; 启动应用&#xff0c;连接数据库&#xff0c;占用了1个连接&#xff0c;再查询如下&#xff1a; 由输出可以看出&#xff0c;打开的连接…

低代码和纯代码:双向奔赴,共创未来ing……

低代码开发是近年来迅速崛起的软件开发方法&#xff0c;让编写应用程序变得更快、更简单。有人说它是美味的膳食&#xff0c;让开发过程高效而满足&#xff0c;但也有人质疑它是垃圾食品&#xff0c;缺乏定制性与深度。你认为低代码到底是美味的膳食还是垃圾食品呢&#xff0c;…

【方案】如何利用大数据+云计算技术打造智能环境监控系统?

小编在之前的文章中也提到过基于云计算的环境智能监控系统是什么样的&#xff0c;收到了很多朋友的关注&#xff0c;今天小编就再次根据智能监控为切入点&#xff0c;深入讲解智能环境监控系统方案的详细落实。 1、传感器节点&#xff1a;首先需要选择适合应用场景的各类传感器…

Actuator内存泄露及利用Swagger未授权自动化测试实现

目录 0x00 前言 0x01 Actuator 泄露及利用 1、Actuator heapdump 内存泄露 2、知道泄露后如何进一步利用 3、如何发现 Actuator 泄露&#xff08;白盒/黑盒&#xff09; 0x02 Swagger自动化测试 1、什么是Swagger&#xff1f; 2、PostmanBurpSuiteXray 联动 3、思考 0x…

JavaAwtSwing的JFrame的pack()方法,容器适配子组件大小,笔记231220

pack()是extends自Window类的方法 使此窗口的大小适合其子组件的首选大小和布局。如果其中一个尺寸小于上一次调用setMinimumSize方法指定的最小尺寸&#xff0c;则会自动放大窗口的宽度和高度。 如果窗口和/或其所有者还不可显示&#xff0c;则在计算首选大小之前&#xff0…

tf卡数据恢复怎么做?记好这4个步骤!

“为了更好的保存数据&#xff0c;我一直都是用TF卡的。很多重要的文件和数据都保存在里面。但是我最近使用时&#xff0c;发现有部分数据丢失了。不知道该怎么办&#xff0c;有没有朋友可以帮帮我呀&#xff1f;” TF卡是一种闪存存储卡&#xff0c;通常用于手机、平板电脑和其…

Linux shell编程学习笔记37:readarray命令和mapfile命令

目录 0 前言1 readarray命令的格式和功能 1.1 命令格式1.2 命令功能1.3 注意事项2 命令应用实例 2.1 从标准输入读取数据时不指定数组名&#xff0c;则数据会保存到MAPFILE数组中2.2 从标准输入读取数据并存储到指定的数组2.3 使用 -O 选项指定起始下标2.4 用-n指定有效行数…

北斗高精度基坑安全监测系统解决方案

目录 1.概述 1.1背景 1.2设计原则 1.3建设内容 2.系统架构 2.1总体架构 2.2拓扑图 2.3云平台 2.3.1概述 2.3.2技术架构 2.3.3平台功能 2.4监测子系统 2.4.1位移监测子系统 2.4.2应力监测子系统 2.4.3环境监测子系统 1.概述 1.1背景 基坑监测是基坑工程施工中的…

一个前端大佬的十年回顾 | 漫画前端的前世今生

作者&#xff1a;京东科技 胡骏 引言 岁月如梭&#xff0c;十载流年 前端技术&#xff0c;蓬勃向前 HTML&#xff0c;CSS&#xff0c;JavaScript 演绎出璀璨夺目的技术画卷 回到十年前&#xff0c;前端技术就像一名戴着厚重眼镜的书呆子&#xff0c;总是小心翼翼&#xff…