版本控制服务器-git

Git简介

什么是Git

Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器。

关于版本控制

什么是版本控制?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本文所展示的例子中,我们仅对保存着软件源代码的文本文件作版本控制管理,但实际上,你可以对任何类型的文件进行版本控制。

我们用word写文档会遇到一下问题:

1、想删除一个段落,又怕将来想恢复找不回,然后把文件另存为,最后在windwos下生成好多的文档。

2、过段时间想找回被删除的文字,已经不知道删除前保存在哪个文件

3、想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删

4、有些文档需要别人帮助填写,你传给同事以后,你又更新了文档,然后同事填完文件又传给了你,怎么去合并文档。

采用版本控制系统就可以解决上面遇到的所有问题。它可以统一进行版本控制,自动帮我们记录每次文件的改动,进行代码合并,不需要把文件传来传去,如果想查看某次改动,只需要在软件里瞄一眼就可以。

有了版本控制你就可以将某个文件回滚到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而导致出现怪异问题,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改,删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。

Git的诞生

Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

Git内文件的三种状态

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。

已提交表示该文件已经被安全地保存在本地仓库中了;

已修改表示修改了某个文件,但还没有提交保存;

已暂存表示把已修改的文件放在下次提交时要保存的清单中。

由此我们看到 Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库

版本控制服务器-git_第1张图片

工作目录:

从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 Git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。所以工作目录就是写代码的地方,如果有新增、修改、删除文件都是在工作目录发生变化。工作目录的文件可以通过git add 命令将文件提交到暂存区。

暂存区:

所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中的index文件(.git/index)中。有时候我们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。暂存区就是用来临时存储代码的一片区域,是已经修改了但是还没有提交,将来可以提交到本地库也可以撤回来。通过git commit 命令可以将暂存区的文件提交到本地仓库。

你可能感兴趣的:(git)