Git企业开发级讲解(二)

在这里插入图片描述


📘北尘_:个人主页

🌎个人专栏:《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》

☀️走在路上,不忘来时的初心

文章目录

  • 一、添加⽂件--场景⼀
    • 1、操作
    • 2、演示
  • 二、查看 .git ⽂件
    • 1、tree .git命令
    • 2、内容讲解
    • 3、总结一下
  • 三、添加⽂件--场景⼆
  • 四、修改文件
  • 总结


一、添加⽂件–场景⼀

1、操作

在包含 .git 的⽬录下新建⼀个 ReadMe ⽂件,我们可以使⽤ git add 命令可以将⽂件添加到暂存区:

  1. 添加⼀个或多个⽂件到暂存区: git add [file1] [file2] …
  2. 添加指定⽬录到暂存区,包括⼦⽬录: git add [dir]
  3. 添加当前⽬录下的所有⽂件改动到暂存区: git add .

再使⽤ git commit 命令将暂存区内容添加到本地仓库中:

  1. 提交暂存区全部内容到本地仓库中: git commit -m “message”
  2. 提交暂存区的指定⽂件到仓库区: git commit [file1] [file2] … -m “message”

注意 git commit 后⾯的 -m 选项,要跟上描述本次提交的 message,由⽤⼾⾃⼰完成,这部分内
容绝对不能省略,并要好好描述,是⽤来记录你的提交细节,是给我们⼈看的。

2、演示

创建文件

touch ReadMe

在这里插入图片描述

文件输入内容

vim ReadMe
cat ReadMe

在这里插入图片描述

提交到暂存区

git add ReadMe

在这里插入图片描述

提交到master

在这里插入图片描述
在这里插入图片描述

git commit 命令执⾏成功后会告诉我们,1个⽂件被改动(就是我们新添加ReadMe⽂件),插⼊了两⾏内容(ReadMe有两⾏内容)。

我们还可以多次 add 不同的⽂件,⽽只 commit ⼀次便可以提交所有⽂件,是因为需要提交的⽂件是通通被 add 到暂存区中,然后⼀次性 commit 暂存区的所有修改。如:
在这里插入图片描述

截⾄⽬前为⽌,我们已经更够将代码直接提交⾄本地仓库了。我们可以使⽤ git log 命令,来查看下历史提交记录:
在这里插入图片描述

该命令显⽰从最近到最远的提交⽇志,并且可以看到我们 commit 时的⽇志消息。
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 --pretty=oneline 参数:

在这里插入图片描述
需要说明的是,我们看到的⼀⼤串类似 6d9a5e4…721a2 的是每次提交的 commit id (版本号),Git 的 commit id 不是1,2,3……递增的数字,⽽是⼀个 SHA1 计算出来的⼀个⾮常⼤的数字,⽤⼗六进制表⽰(你看到的 commit id 和我的肯定不⼀样,以你⾃⼰的为准)。


二、查看 .git ⽂件

1、tree .git命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、内容讲解

  1. index 就是我们的暂存区,add 后的内容都是添加到这⾥的。
  2. HEAD 就是我们的默认指向 master 分⽀的指针:

在这里插入图片描述

⽽默认的 master 分⽀,其实就是:

在这里插入图片描述
打印的 6d9a5e4972e5f69973bf3e8ebb527e23cea721a2 是什么东西呢?保存的就是当前最新的 commit id 。

  1. objects 为 Git 的对象库,⾥⾯包含了创建的各种版本库对象及内容。当执⾏ git add 命令时,暂存区的⽬录树被更新,同时⼯作区修改(或新增)的⽂件内容被写⼊到对象库中的⼀个新的对象中,就位于 “.git/objects” ⽬录下,让我们来看看这些对象有何⽤处:

在这里插入图片描述
查找 object 时要将 commit id 分成2部分,其前2位是⽂件夹名称,后38位是⽂件名称。
找到这个⽂件之后,⼀般不能直接看到⾥⾯是什么,该类⽂件是经过 sha (安全哈希算法)加密过的⽂件,好在我们可以使⽤ git cat-file 命令来查看版本库对象的内容:
在这里插入图片描述

其中,还有⼀⾏ tree bcc6b6348c70d8ff8920e64fd711f5ddac35b130 ,我们使⽤同样的⽅法,看看结果:
在这里插入图片描述

在看 ReadMe 对应的在看 ReadMe 对应的c940fc8d96f03c8bc23eabd2b8af558afde227f9
在这里插入图片描述
这是我们对ReadMe做的修改!!被git记录了下来!!

3、总结一下

• index: 暂存区, git add 后会更新该内容。
• HEAD: 默认指向 master 分⽀的⼀个指针。
• refs/heads/master: ⽂件⾥保存当前 master 分⽀的最新 commit id 。
• objects: 包含了创建的各种版本库对象及内容,可以简单理解为放了 git 维护的所有修改。


三、添加⽂件–场景⼆

学习到这⾥,我们已经清楚了如何向仓库中添加⽂件,并且对于⼯作区、暂存区、版本库也有了⼀定
的认识。那么我们再展⽰⼀种添加⽂件的场景,能加深对⼯作区、暂存区、版本库的理解,⽰例如:
在这里插入图片描述
在这里插入图片描述
提交后发现打印了 1 file changed, 0 insertions(+), 0 deletions(-) ,意思是只
有⼀个⽂件改变了,这时我们提出了疑问,不是新增了两个⽂件吗?
再来回忆下, git add 是将⽂件添加到暂存区, git commit 是将暂存区的内容添加到本地仓库中。由于我们并没有使⽤ git add file12,file12 就不在暂存区中维护,所以我们 commit 的时候
其实只是把已经在暂存区的 file11 提交了,⽽遗漏了⼯作区的 file12。如何提交 file12 呢?很简单,再次add , commit 即可。


四、修改文件

修改:增加,修改,删除
Git ⽐其他版本控制系统设计得优秀,因为 Git 跟踪并管理的是修改,⽽⾮⽂件。
什么是修改?⽐如你新增了⼀⾏,这就是⼀个修改,删除了⼀⾏,也是⼀个修改,更改了某些字符,也是⼀个修改,删了⼀些⼜加了⼀些,也是⼀个修改,甚⾄创建⼀个新⽂件,也算⼀个修改。
让我们将 ReadMe ⽂件进⾏⼀次修改:
在这里插入图片描述
此时,仓库中的 ReadMe 和我们⼯作区的 ReadMe 是不同的,如何查看当前仓库的状态呢? git status 命令⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改。
在这里插入图片描述

上⾯的结果告诉我们,ReadMe 被修改过了,但还没有完成添加与提交。
⽬前,我们只知道⽂件被修改了,如果能知道具体哪些地⽅被修改了,就更好了。有同学会说,我刚改的我知道呀!可是,你还记得你三天前写了什么代码吗?或者没写?
在这里插入图片描述
在这里插入图片描述
git diff [file] 命令⽤来显⽰暂存区和⼯作区⽂件的差异,显⽰的格式正是Unix通⽤的diff格式。也可以使⽤ git diff HEAD – [file] 命令来查看版本库和⼯作区⽂件的区别。
知道了对 ReadMe 做了什么修改后,再把它提交到本地仓库就放⼼多了。
在这里插入图片描述
git add 之后,就没有看到上⾯ no changes added to commit (use “git add”
and/or “git commit -a”) 的消息了。接下来让我们继续 git commit 即可:

 git commit -m "add modify ReadMe file"

总结

Git版本控制器

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

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

相关文章

HTTP-FLV详解及分析

文章目录 前言一、HTTP-FLV 简介1、市场上使用 http-flv 的商家2、http-flv、rtmp 和 hls 直播的优缺点3、http-flv 技术实现 二、Nginx 配置 http-flv1、Windows 安装 nginx,已经集成 nginx-http-flv-module2、nginx.conf 配置文件3、运行 nginx 服务器4、ffmpeg 推…

如何使用 Java 设计一个简单的成绩计算程序

简介 本文将介绍如何使用 Java 设计一个简单的成绩计算程序。该程序可以读取学生的成绩并计算出平均分、最高分和最低分等。通过这个例子,我们将展示如何使用面向对象的思想和一些常用的 Java 功能来解决实际问题。 需求分析 在开始编写程序之前,我们…

K8S知识点(十)

(1)Pod详解-启动命令 创建Pod,里面的两个容器都正常运行 (2)Pod详解-环境变量 (3)Pod详解-端口设置 (4)Pod详解-资源配额 修改:memory 不满足条件是不能正常…

阿里云centos7.9乱码问题

1.vim输入中文乱码 在/etc/vimrc最下面输入以下代码 set fileencodingsutf-8,gb2312,gbk,gb18030 set termencodingutf-8 set fileformatsunix set encodingprc 2.vim复制的时候如果有#号,下面的代码开头都会有#号 在编辑模式输入:set paste 再进行粘贴即可 3…

leetcode:2935. 找出强数对的最大异或值 II【最大异或值还是得看01Trie树啊!】

题目截图 题目分析 排序后,限定了x和y的相对位置 假设y > x,随着y的移动,必须要保证2x > y 所以可以使用滑动窗口维护一堆满足条件的x 这些x的异或值记录在Trie树中即可 ac code class Node:__slots__ children, cntdef __init__(s…

Pandas画图报错:ValueError: signal only works in main thread

Pandas画图报错:ValueError: signal only works in main thread 基于Django 解决方法 按如下方式运行服务器 python manage.py runserver --nothreading --noreload

SpringCloud Alibaba(上):注册中心-nacos、负载均衡-ribbon、远程调用-feign

Nacos 概念:Nacos是阿里巴巴推出的一款新开源项目,它是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos致力于帮助用户发现、配置和管理微服务,它提供了一组简单易用的特性集,包括动态服务发现、服务配置…

【Pytorch和深度学习】栏目导读

一、栏目说明 本栏目《pytorch实践》是为初学者入门深度学习准备的。本文是该栏目的导读部分,因为计划本栏目在明年完成,因此,导读部分,即本文也在持续更新中。 本栏目设计目标是将深度学习全面用pytorch实践一遍,由浅…

JavaScript数组

JavaScript中的数组是一种强大而灵活的数据结构,用于存储和操作一组值。本文将介绍如何创建和访问数组,以及JavaScript数组常用的方法,如push、pop、shift、unshift和slice等。 一、创建和访问数组 在JavaScript中,可以使用以下…

聊聊logback的DuplicateMessageFilter

序 本文主要研究一下logback的DuplicateMessageFilter TurboFilter ch/qos/logback/classic/turbo/TurboFilter.java public abstract class TurboFilter extends ContextAwareBase implements LifeCycle {private String name;boolean start false;/*** Make a decision …

上机实验四 图的最小生成树算法设计 西安石油大学数据结构

实验名称:图的最小生成树算法设计 (1)实验目的: 掌握最小生成树算法,利用kruskal算法求解最小生成树。 (2)主要内容: 利用kruskal算法求一个图的最小生成树,设计Krus…

Xilinx Artix7-100T低端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优缺点4、详细设计方案设计原理框图OV5640及其配置权电阻硬件方案MIPI CSI-2 RX SubsystemSensor Demosaic图像格式转换Gammer LUT伽马校正VDMA图像缓存AXI4-Stream toVideo OutHDMI输出 5、…

数据校验:Spring Validation

Spring Validation概述 在开发中,我们经常遇到参数校验的需求,比如用户注册的时候,要校验用户名不能为空、用户名长度不超过20个字符、手机号是合法的手机号格式等等。如果使用普通方式,我们会把校验的代码和真正的业务处理逻辑耦…

K8S篇之etcd数据备份与恢复

一、etcd备份与恢复 基本了解: 1、k8s 使用etcd数据库实时存储集群中的数据,安全起见,一定要备份。 2、备份只需要在一个节点上备份就可以了,每个节点上的数据是同步的;但是数据恢复是需要在每个节点上进行。 3、etcd…

系统韧性研究(4)| 系统韧性的技术分类

系统韧性技术是任何提高系统韧性的架构、设计或实现技术。这些技术(例如缓解措施,如冗余、保障措施和网络安全对策)或被动地抵御逆境或主动检测逆境,并对其做出反应,亦或者从它们造成的伤害中恢复过来。系统韧性技术是…

软件测试/测试开发丨探索标识符在编程中的重要性

点此获取更多相关资料 什么是标识符 在 Python 中,标识符是用来标识变量、函数、类、模块和其他对象的名称。需要注意的是,在定义标识符的时候,虽然很自由,但是也不能随心所欲,合法的标识符需要遵从一定的规范。 命…

ArcGIS实现矢量区域内所有要素的统计计算

1、任务需求:统计全球各国所有一级行政区相关属性的总和。 (1)有一个全球一级行政区的矢量图,包含以下属性(洪灾相关属性 province.shp) (2)需要按照国家来统计各个国家各属性的总值…

突然消失的桌面文件如何恢复?详细教程让你轻松解决问题!

桌面文件突然消失,对于很多人来说,可能是个令人头疼的问题。这些文件可能包含重要的信息,也可能是数日甚至数周的努力成果。那么,当这种情况发生时,我们如何恢复丢失的文件呢?本文将提供一些实用的建议。 1…

【ArcGIS Pro微课1000例】0031:las点云提取(根据范围裁剪点云)

本文讲解ArcGIS Pro3.0中,las点云数据的提取(根据范围裁剪点云)方法。 文章目录 一、加载数据二、工具介绍三、点云裁剪一、加载数据 打开ArcGIS Pro,新建地图,加载配套实验数据包中的0031.rar中的点云数据point.las与范围bound.shp,如下图所示: 二、工具介绍 名称:提…

table表格的某一行数据如何回填

目的:table表格的某一行数据的输入框按钮触发对话框,对话框选择的数据再回填到table表格的这一行中。 1.插槽中传递本行的index: v-slot"{ row, $index }" 2.点击事件或者change事件传递index: click"val > tpmClicked($index)"…