1605_Git版本管理概念图解_git_for_computer_scientists阅读

本文深入探讨Git版本管理的核心概念,如提交、分支、合并及Rebase操作,并解析其内部机制,帮助读者理解如何高效利用Git进行项目协作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         全部学习汇总: GitHub - GreyZhang/g_unix: some basic learning about unix operating system.

 

         目前没有很好的笔记分类放置这一份学习笔记,因为我的工具箱分类并不适合它。我之前的工具箱笔记主要还是简洁扼要来列出工具使用的参考,而这个其实是版本管理的一个学习。那么,既然我是因为看了OS的教程参考资料找到的这部分信息,暂且还是归类到这里面。阅读的这一份资料非常简短,但是的确是能够很好阐明版本管理的一些行为意图。

         在git的版本管理中,每一个提交都可以作为一个blob对象,而这样的对象不能够是一个孤立的对象。至少,他会跟某些节点产生一些联系。

         如果一个节点没有父提交,那么意味着这个节点是初始提交。有意思的是初始提交其实是可以有多个的,这通常意味着多个项目的合并。

1. 参考引用、head、branch等这样的额概念,其实只是一个标记不会存入到版本之中。

2. 通过提交动作可以整个管理树中增加节点。

3. HEAD是一个比较特殊的引用,因为它指向了另一个引用。

4. 远程引用与本地引用的差别在于指向的命名空间不同,远程引用的内容由远程机器控制,git只是引用它并且可以获得它的相关更新。

1. 什么是tag呢?tag既是一个图上的节点,又包含了标签信息。由此可以知道,tag本身其实是意味着有一次提交的。

2. Git库本质上是一系列的节点与标签的组合。

1. 图1表达的概念:当前的repo有本地以及远程引用,并且远程引用已经有了新的更新。然而,当前的repo使用的还是旧的远程版本。

2. 图2在图1的基础上,进行了本地与远程的合并。由于此时本地的库没有任何提交更新,因此这样的合并只是移动一下master标签即可。

3. 图3则复杂了一点,不仅有远程更新而且有了本地的提交更新。如此,版本需要进行合并处理。

1. 第一个图中,创建了一个新的节点e,其实只是为了合并本地以及远程分支。这里的节点e比较特殊,因为它有两个父提交。

2. 理解了第一个图,第二个图的理解就比较容易了。因为这只是相同的情况出现了多次的处理过程。

         这一页介绍了rebase的概念。通过描述可以知道,rebase其实是放弃了一部分之前的信息,这些信息可能是改变远程引用的指向,也可能只是放弃一些本地的信息。对于上面的图1来说,表达的概念其实是:我原本的repo使用了远程节点b,但是现在的c兴许更好,以后的开发使用大家都不要用b了,要去使用c。

         而这一个例子则更能够表达通用场景,结合上一页的原始图信息。我现在的repo引用了远程库的c,在此基础上有了本地的提交d2,又有了提交h。同时,本地库中基于远程引用的g也有了一个新的提交d3。之后,我觉得d3能够表达我现在对于开发最好的期待,因此我又增加了一次更新h2。这时候,我发现d2和h其实没什么用途了。我也不想其他人在此基础上继续开发,因此想要放弃这部分信息。于是,通过rebase可以直接把版本迁移到d3开始的主线上。结果,rebase的命令比较聪明,它发现我在d3基础上已经做了更新到了h2,因此它会把标签移动到h2作为master。

         原始阅读的时候,有些地方理解的并不是很准确,标注也不是很对。但是整理的过程中进行了一定的纠正,这也是整理笔记的意义所在吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值