包虫病

注册

 

发新话题 回复该主题

Git备忘清单详解 [复制链接]

1#
安卓开发求职招聘QQ群 http://liangssw.com/bozhu/12746.html
前言

Git是一个免费并且开源的分布式版本控制系统,旨在快速高效地处理从小到大所有项目的版本管理。Git是目前最流行的版本管理工具,目前绝大部分公司都是使用Git作为项目的版本管理工具。目前最火的开源社区Github,就是基于Git版本控制系统,所以掌握Git技能很重要。由于Git开发效率高、团队协作方便,现在很多IDE都集成了Git,并且提供一些相关的图形化操作。也有很多很优秀,专门用来简化Git操作的GitGUI工具,例如Sourcetree,Tortoise等。我刚接触Git的时候,就是从GUI入手的,使用Sourcetree可视化版本控制工具进行操作。Sourcetree底层也是对常用的Git命令进行封装实现的,傻瓜式操作,使用非常方便,但是我用完什么都不懂,Git的内部原理也不易理解,决定在回头仔细学习一下Git命令行。学习完Git命令行后发现,命令行很好学,非常灵活,而且使用起来非常帅气。因此,直接Git命令,才是最灵活的操作。

本篇是我学习Git系列的开篇,主要讲述Git的基本概念和工作原理,然后介绍一下Git安装以及环境配置,最后探讨一下Git常用命令以及使用场景。

Git基本概念以及工作原理你所不了解的Git诞生史

同生活中的许多伟大事件一样,Git诞生于一个极富纷争大举创新的年代。众所周知,Linux内核开源项目有着为数众广的参与者,但是绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(-年间),即Linus本人通过手工方式合并世界各地志愿者通过diff的方式传过来的代码。

到年后,由于代码库太大,Linus很难继续通过手工方式进行管理,于是Linux整个项目组开始启用分布式版本控制系统BitKeeper来管理和维护代码,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

到了年,一位Linux开发成员Andrew(Samba协议之父)写了一个可以连接BitKeeper仓库的外挂,因此BitMover公司(BitKeeper持有者)认为他反编译了BitKeeper;于是BitMover决定中止Linux免费使用BitKeeper的授权。最终Linux团队与BitMover磋商无果,开发BitKeeper的商业公司同Linux内核开源社区的合作关系结束,他们收回了免费使用BitKeeper的权力。这就迫使Linux开源社区(特别是Linux的缔造者LinusTorvalds)不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。

于是,Linus花了两周时间用C语言写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git进行管理了!

Git工作原理

Git是一套内容寻址文件系统,Git从核心上来看不过是简单地存储键值对(key-value)。它允许插入任意类型的内容,并会返回一个键值,通过该键值可以在任何时候再取出该内容。可以通过底层命令hash-object来示范这点,传一些数据给该命令,它会将数据保存在.git目录并返回表示这些数据的键值。

文件目录

Git文件目录

Git工作区有个隐藏目录.git,核心文件包括:config文件、objects文件夹、HEAD文件、index文件以及refs文件夹。下面依次对其进行说明:

config文件:该文件主要记录针对该项目的一些配置信息,例如是否以bare方式初始化、remote的信息等,通过gitremoteadd命令增加的远程分支的信息就保存在这里;

objects文件夹:该文件夹主要包含git对象。Git中的文件和一些操作都会以git对象来保存,git对象分为BLOB、tree和

分享 转发
TOP
发新话题 回复该主题