IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git 底层原理(2/3) -> 正文阅读

[开发工具]git 底层原理(2/3)

11. git diff

  1. git diff // 对比的是当前工作区和索引区
  2. git diff --cached // 对比的是索引区和代码仓库
    在VSCode编辑器中,默认采用的git diff,即工作区和索引区。
    在这里插入图片描述

12. 配置远程仓库

在这里插入图片描述

git remote add origin https://github.com/git2022/git-demo.git

问:执行上面的命令会发生啥?
答:会在.git/config下添加如下内容。

在这里插入图片描述
接下来执行下面的命令,将本地仓库推到远程:

git push -u origin master

问:上面这条命令执行完,.git里发生了啥?
答:
在这里插入图片描述
在这里插入图片描述

13. git远程仓库后台

在git远程仓库的后台同样也记录着你git操作的信息

14. git对象的压缩

即:压缩成的blob。

ls -lh // 命令可以在列出文件的同时查看文件的大小
du -h 文件夹 // 可以列出当前文件夹文件的内容大小情况
在这里插入图片描述
通过上面的4次commit,我们发现在.git/objects里将随着add、commit越来越大,这样是不可取的。

接下来我们在看看我们本地原文件的大小:
在这里插入图片描述
我们发现本地文件也不过区区10M,那么你.git/objects你给我搞那么大,而且大的不可控显然是不合理的。

那么有没有办法将.git/objects里的快照变小呢?

其实git提供了一个gc机制。
在这里插入图片描述
从上面可以看到,git gc 将 .git/objects里的内容压缩到.git/objects/pack

14. 关于SHA1的小插曲

google在2017年发现可以由不同的文件通过SHA1生成一样的hash,因此SHA1变的不安全了。

目前git采用的仍是SHA1,但是生成的hash会根据文件名、文件内容、文件大小等来生成,因此碰撞的概率极小。社区也在规划升级为SHA256。

15. git pack 的压缩

在这里插入图片描述
其中 .idx是对pack 的索引
因此,即使被压缩后,我们也能够找到之前commit的内容。

下面是对pack内容的查看:
在这里插入图片描述


我们从远程仓库clone一个项目的时候,其实clone下来也是被压缩的,这样是为了缩短传输的时长。
在这里插入图片描述
其中的172.50M是压缩后的,
在这里插入图片描述
从克隆下来的内容来看,我们也可以明确是压缩后的。

18. git垃圾对象的清理

19. 分支的合并

  1. Fast-forward:基于c2创建了一个c3,其中c2一直没有变(其他人没有从c2再拉分支),这种模式称为Fast-forward。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 3 way merge
    基于C2拉了一个C3分支,同时其他人也基于C2分支拉了一个C4分支,
    在这里插入图片描述

而C4那个人干活快,干完很快就合了master,即变成如下结构:
在这里插入图片描述
当我们C3完成后想git merge master,会发生什么呢?

会让你输入一个解释,一般情况用它给的解释就好了。
在这里插入图片描述
接下来便会生成如下结构:
在这里插入图片描述
可以看到C5有两个parent

在这里插入图片描述

通过SourceTree来看这个结构更清晰:
在这里插入图片描述

如果C4和C3产生冲突呢??这是工作中很常见的,请看下集分解。

21. 带冲突的3 way merge

场景:
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 14:01:24  更:2021-10-07 14:03:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 13:45:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计