前言: 自己第一次听到Git应该是一年前了,当时很懵,不知道它是干啥的,在网上搜索了很多文章,一直不是太明白;今天我来记录一下自己对Git的学习,如果对其他童鞋有所帮助,我荣幸之至!
一、Git 简析
Git是什么?
Git是目前世界上最先进的分布式版本控制系统(没有之一)。最初由 Linux Torvalds (Linux 之父) 创造,于 2005 年发布。
git的历史: 很多人都知道,Linus (我给他叫小雷)在 1991 年创建了开源的 Linux,从此,Linux 系统不断发展,已经成为最大的服务器系统软件了。
小雷 虽然创建了 Linux,但 Linux 的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为 Linux 编写代码,那 Linux 的代码是如何管理的呢
事实是,在 2002 年以前,世界各地的志愿者把源代码文件通过 diff 的方式发给 Linus,然后由 小雷 本人通过手工方式合并代码!
你也许会想,为什么 Linus 不把 Linux 代码放到版本控制系统里呢?不是有 CVS、SVN 这些免费的版本控制系统吗?为啥?因为小雷觉得它也不好用呀:速度慢、必须连网,你这让网络不好的盆友怎么办,因此,小雷反对 CVS 和 SVN。有一些商用的版本控制系统,比 CVS、SVN 好用,虽然小雷不缺钱吧,但是它和小雷的价值观不一样呀(小雷要的是开源免费,你TM竟然收费)。
到了 2002 年,Linux 系统已经发展了十年了,代码库之大让小雷通过手工的方式忙不过来了,社区的弟兄们也觉得小雷的手工方式有点low,于是小雷选择了一个商业的版本控制系统 BitKeeper,BitKeeper 的东家 BitMover 公司出于人道主义精神,授权 Linux 社区免费使用这个版本控制系统。
安定团结的大好局面在 2005 年就被打破了,原因是 Linux 社区大佬太多,不免沾染了一些梁山好汉的江湖习气。开发 Samba 的 Andrew 试图破解 BitKeeper 的协议(这么干的其实也不只他一个),被 BitMover 公司发现了(监控工作做得不错!),于是 BitMover 公司怒了,要收回 Linux 社区的免费使用权(让你免费用还反过来搞我,不让你用了,除非给我道歉)。
小雷可以向 BitMover 公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是:Linus 花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 Git!一个月之内,Linux 系统的源码已经由 Git 管理了!牛是怎么定义的呢?大家可以体会一下。
历史就是这么偶然,如果不是当年 BitMover 公司威胁 Linux 社区,可能现在我们就没有免费而超级好用的 Git 了。
版本控制系统
不管是集中式的 CVS、SVN 还是分布式的 Git 工具,实际上都是一种版本控制系统,我们可以通过他们很方便的管理我们的文件、代码等,我们可以先来畅想一下如果自己来设计这么一个系统,你会怎么设计?
摁,这不禁让我想起了之前写毕业论文的日子,我先在一个开阔的空间创建了一个文件夹用于保存我的各种版本,然后开始了我的 “毕业论文版本管理”,参考下图:
看着挺完美的,可是有一些问题:
- 我每一次改了啥,我忘了!
- 当我在迭代我的超级无敌怎么样都不改的版本的时候,突然回想起好像之前版本 1.0 的第一节内容和 2.0 版本第三节的内容加起来才是最棒的,我需要打开多个文档并创建一个新的文档,仔细对比文档中的不同并为我的新文档添加新的东西,好麻烦啊…
- 到最后文件多起来的时候,我甚至都不知道是我的 “超级无敌版” 是最终版,还是 “打死都不改版” 是最终版了;
- 更为要命的是,我保存在我的桌面上,没有备份,意味着我本地文件手滑删除了,那我就…Gg…了。
并且可能问题还远不止于此,所以每每想起,就不自觉对小雷膜拜了起来。
二、Git 原理入门
Git有什么特点? 简单来说就是:高端大气上档次!
Git 初始化
首先,让我们来创建一个空的项目目录,并进入该目录。
$ mkdir new-project
$ cd new-project
如果我们打算对该项目进行版本管理,接下来使用 git init 命令,进行初始化。
$ git nint
初始化之后"new-project
"项目下会有一个.git
的文件(没有的话打开隐藏文件,不会打开百度哦!)
也可以在new-project
命令窗口输入命令tree -a
查看。
之后就可以对new-project
下的文件进行版本控制了
$ git add <file> //表示提交一个文件到缓存区中
$ git commit -m'提交注释' //将缓存区的文件提交到历史库中
后续会说下命令的原理
请听下回分解……
…………………………