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.hqwc.cn/news/171770.html

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

相关文章

数据结构哈希表(散列)Hash,手写实现(图文推导)

目录 一、介绍 二、哈希数据结构 三、✍️实现哈希散列 1. 哈希碰撞💥 2. 拉链寻址⛓️ 3. 开放寻址⏩ 4. 合并散列 一、介绍 哈希表,也被称为散列表,是一种重要的数据结构。它通过将关键字映射到一个表中的位置来直接访问记录&#…

Day10—SQL那些事(特殊场景的查询)

文章目录 1、只想查一个字段却不得不左连接好多张表2、左连接的时候只想取最后一条数据 1、只想查一个字段却不得不左连接好多张表 只想查一个字段却不得不左连接好多张表,而且因为左连接的表太多还导致查出来的数据重复 原先的sql SELECTsph.po_num,chh.visa_ex…

java网络编程之UDP协议

文章目录 UDP简介一发一收客户端:服务端: 多发多收实现多开客户端:服务端 UDP简介 UDP(User Datagram Protocol) DatagramSocket 用于创建客户端、服务端DatagramSocket() :创建客户端的Socket对象,系统随…

【React】Redux基本使用

什么情况使用 Redux ? Redux 适用于多交互、多数据源的场景。简单理解就是复杂 从组件角度去考虑的话,当我们有以下的应用场景时,我们可以尝试采用 Redux 来实现 某个组件的状态需要共享时 一个组件需要改变其他组件的状态时 一个组件需要…

SARAS多步TD目标算法

SARAS多步TD目标算法 代码仓库:https://github.com/daiyizheng/DL/tree/master/09-rl SARSA算法是on-policy 时序差分 在迭代的时候,我们基于 ϵ \epsilon ϵ-贪婪法在当前状态 S t S_t St​ 选择一个动作 A t A_t At​ ,然后会进入到下一个状态 S…

Vue基础必备掌握知识点-Vue的指令系统讲解

什么是Vue? Vue的概念 Vue是一个用于构建用户界面的渐进式框架(通过数据渲染出用户所能够看到的界面) Vue的两种使用方式 1:Vue核心包开发 场景:局部模块的改造 2:Vue核心包&Vue工程化的开发 场景:整站开发 Vue开发…

安装virt-manger虚拟机管理器

环境: redhat7:192.168.1.130 安装步骤: 安装qemu-kvm yum install -y qemu-kvm安装libvirt yum install -y libvirt重启libvirt systemctl restart libvirtd查看libvirt的版本信息 virsh version安装virt-manager yum install -y virt-manager检验…

OCR转换技巧:如何避免图片转Word时出现多余的换行?

在将图片中的文字识别转换为Word文档时,我们很多时候时会遇到识别内容的一个自然段还没结束就换行的问题,这些就是我们常说的多余换行的问题。为什么会产生这个问题呢?主要是由于OCR返回的识别结果是按图片上的文字换行而换行,而不…

知识竞赛中常用的物料有哪些

办一场知识竞赛,需要准备的物料要根据具体竞赛规则和流程来定。但是要仔细分析起来,还是可以做一个常用物料清单的,下面我将知识竞赛活动中常用的物料做了一个分类和列表,大家以后在竞赛活动举办过程中,可以参考。 一、…

【STM32】定时器+基本定时器

一、定时器的基本概述 1.软件定时器原理 原来我们使用51单片机的时候,是通过一个__nop()__来进行延时 我们通过软件的方式来进行延时功能是不准确的,受到很多不确定因素。 2.定时器原理:计数之间的比值 因为使用软件延时受到影响&#xff0c…

IntelliJ IDEA 安装 GitHub Copilot插件 (最新)

注意: GitHub Copilot 插件对IDEA最低版本要求是2021.2,建议直接用2023.3,一次到位反正后续要升级的。 各个版本的依赖关系,请参照: ##在线安装: 打开 IntelliJ IDEA扩展商店,输入 "Git…

HTML 之常用标签的介绍

文章目录 h标签p标签a标签img 标签table、tr、td标签ul、ol、li 标签div 标签 h标签 <h> 标签用于定义 HTML 文档中的标题&#xff0c;其中 h 后面跟着一个数字&#xff0c;表示标题的级别。HTML 提供了 <h1> 到 <h6> 六个不同级别的标题&#xff0c;其中 &…