作者
小齐本齐
责编
屠敏
头图
CSDN下载自东方IC
本文为码农田小齐投稿
知其所以然才能知其然,本文分享了Git的实现原理,并且梳理了日常最常用的12个命令,分为三大类分享给你。
本文的结构如下:
作者和开发原由Git的数据模型常用命令资源推荐
作者和开发原由
Talkischeap.Showmethecode.
这句话就出自Linux和Git的作者LinusTorvalds。
原本Linux内核的版本控制系统是用的BitKeeper,然而年,BitMover公司不再让Linux开发团队免费使用了。。
Linus一听,不给用了?老子自己写!
于是,大佬十天之内完成了Git的第一个版本。
所以Git是一个免费的、开源的版本控制系统。
版本控制系统
版本控制其实每个人都用过,那些年修改过的简历:
小齐简历版小齐简历版小齐简历版小齐简历版小齐简历版小齐简历版小齐简历版小齐简历版...
还有那些年打死都不再改的毕业论文:
毕业论文最终版毕业论文最最终版毕业论文最最最终版毕业论文最最最最终版毕业论文最终不改版毕业论文最终真不改版毕业论文最终真真不改版毕业论文最终打死不改版毕业论文最终打死不改版2...
没错,这就是本地版本控制系统。
很明显,好处是简单,但是只能一个人在这改,无法和他人完成合作。那么以下两种主流的版本控制系统应运而生。
1.集中化版本控制系统
CentralizedVersionControlSystems(CVCS)
比如:CVS,Subversion,Perforce,etc.
这种版本控制系统有一个单一的集中管理的服务器,保存所有文件的最新版本,大家可以通过连接到这台服务器上来获取或者提交文件。
这种模式相对本地版本控制系统是有所改进的,但是缺点也很明显,如果服务器宕机,那么轻则耽误工作、重则数据丢失。于是分布式版本控制系统应运而生。
2.分布式版本控制系统
DistributedVersionControlSystems(DVCS)
比如:Git,Mercurial,Bazaar,etc.
分布式的版本控制系统会把代码仓库完整地镜像下来,这样任何一个服务器发生故障,都可以用其他的仓库来修复。
更进一步,这种模式可以更方便的和不同公司的人进行同一项目的开发,因为两个远程代码仓库可以交互,这在之前的集中式系统中是无法做到的。
那么什么叫“把代码仓库完整地镜像下来”呢?
CVCS每个版本存放的是当前版本与前一个版本的差异,因此也被称作基于差异的版本控制(delta-based);
Git存储的是所有文件的一个快照(snapshot),如果有的文件没有修改,那就只保留一个reference指向之前存储的文件。
不是很好理解?那接着看吧~
Git的数据模型
1.什么是快照(snapshot)呢?
首先我们来学两个Git中的术语:
blob,就是单个的文件;tree,就是一个文件夹。快照则是被追踪的最顶层的树。
比如我的“
转载请注明:http://www.0431gb208.com/sjszlfa/2162.html