2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

码农世界 2024-05-17 后端 64 次浏览 0个评论

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

3.git reset --mixed

还是这个场景:

   (F)
A-B-C
    ↑
  master

我输入了 git reset --mixed,结果是:

   (F)
A-B-C
  ↑
master

分支指针指向上次提交点,但是文件状态还是在当前文件 C ,我看到的现象就是 C 文件还在,但是没有 add ,是红色的。

该指令特点是分支指针动,而文件状态指针不动

3、听说过git reflog?

git reflog 是一个非常有用的命令,可以展示已经执行过的所有动作的日志。包括合并、重置、还原,基本上包含我们对的我们的分支所做的任何修改。

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

如果我们犯了错,可以根据 reflog 提供的信息通过重置 HEAD 来轻松地重做!

假设我们实际上并不需要合并原有分支。当我们执行 git reflog 命令时,我们可以看到这个 repo 的状态在合并前位于 HEAD@{1}。那我们就执行一次 git reset,将 HEAD 重新指向在 HEAD@{1} 的位置。

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

Reflog操作+回退操作

二、git工作流程

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

执行git add后

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

使用cat命令打开

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

乱码原因是git对储存内容进行了二进制压缩,采用更有效的命令

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

成功读取数据,blob包含一个文件中要存储的数据和一个头部信息一起做SHA-1散列运算

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

乱码可以理解成数据的标识数据

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

上面的58c9bd等信息代表的键是位置,111是存储的数据

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

在之前的命令中objects新增了两个文件

然后我们发现这个objects是一个tree

tree是一个目录结构,从左往右分是文件权限 、文件类型、文件的内容对应的sha1值、文件名字

增加对应的两个文件

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

tree流程用图形看

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

同时我们还多出来一个objects,commit,存储的是快照,提交内容从左到右是,作者名、提交时间、最后一次提交的作者名和提交时间2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

commit流程从图形上看是这样的

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

分支2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

head、分支、普通的tag可以理解成为一个指针,指向对于conmmit的sha1值,从图形上看

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

问题1:为什么要把文件的权限和文件名储存在tree object里面而不是blob object呢?

想象一下修改一个文件的命名。如果将文件名保存在blob里面,那么Git只能多复制一份原始内容形成一个新的blob object。而Git的实现方法只需要创建一个新的tree object将对应的文件名更改成新的即可,原本的blob object可以复用,节约了空间。

问题2:每次commit,Git储存的是全新的文件快照还是储存文件的变更部分?

由上面的例子我们可以看到,Git储存的是全新的文件快照,而不是文件的变更记录。也就是说,就算你只是在文件中添加一行,Git也会新建一个全新的blob object。那这样子是不是很浪费空间呢?

这其实是Git在空间和时间上的一个取舍,思考一下你要checkout一个commit,或对比两个commit之间的差异。如果Git储存的是问卷的变更部分,那么为了拿到一个commit的内容,Git都只能从第一个commit开始,然后一直计算变更,直到目标commit,这会花费很长时间。而相反,Git采用的储存全新文件快照的方法能使这个操作变得很快,直接从快照里面拿取内容就行了。

当然,在涉及网络传输或者Git仓库真的体积很大的时候,Git会有垃圾回收机制gc,不仅会清除无用的object,还会把已有的相似object打包压缩。

问题3:Git怎么保证历史记录不可篡改?

通过SHA1哈希算法和哈希树来保证。假设你偷偷修改了历史变更记录上一个文件的内容,那么这个问卷的blob object的SHA1哈希值就变了,与之相关的tree object的SHA1也需要改变,commit的SHA1也要变,这个commit之后的所有commit SHA1值也要跟着改变。又由于Git是分布式系统,即所有人都有一份完整历史的Git仓库,所以所有人都能很轻松的发现存在问题。

2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

大佬参考

  • 书籍 Scott Chacon, Ben Straub - Pro Git-Apress (2014)")
  • 书籍 Jon Loeliger, Matthew McCullough - Version Control with Git, 2nd Edition - O’Reilly Media (2012)")
  • Rebase and the golden rule explained

    B站视频链接: [中文] 这才是真正的 Git——Git 内部原理揭秘!(freeCodeConf 2019 深圳站)_哔哩哔哩_bilibili PPT 链接: 这才是真正的Git——Git原理及实用技巧

    本人参考文章:

    1、Git对象(objects)简介_.git/objects-CSDN博客

    2、git reset 命令详解 - 简书

    3、关于 git reset 命令几个常用参数的理解_git reset的各种参数意义-CSDN博客

    2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

    2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

    2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事

    既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

    由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

    需要这份系统化资料的朋友,可以戳这里获取

    630433118)]

    既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

    由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

    需要这份系统化资料的朋友,可以戳这里获取

转载请注明来自码农世界,本文标题:《2024年最全git学习(1),2024年最新我想谈谈关于大数据开发面试那些事》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,64人围观)参与讨论

还没有评论,来说两句吧...

Top