Git 学习之旅(一)
Git是目前世界上最先进的分布式版本控制系统(没有之一)。
什么是版本控制系统:这个系统,不但能自动帮我记录每次文件的改动,还可以让同时协作编辑,可以同时管理多个类似的文件呢!
CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。那集中式和分布式版本控制系统有什么区别呢?
集中式版本控制系统,版本库是集中存放在中央服务器中的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
集中式版本控制系统最大的毛病就是必须联网才能工作!!!
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。
既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说我在自己电脑上改了文件tiantian,我的舍友也在他的电脑上改了文件tiantian,这时,我俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。(都是集中式的,有比他好用的SVN,不懂他为什么执着于CVS,怕是执念吧)由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。
分布式版本控制系统除了最简单最popular的Git,还有促使他诞生的BitKeeper(说到这里,不得不谈起Git的由来,可谓是哪里有压迫,哪里就有反抗O(∩_∩)O哈哈~)
创建版本库
什么是版本库?
我们一般将版本库称为仓库,英文名为repository,可以简单的把它看成一个目录,只不过目录里面的文件都会由 Git 进行管理,当我们对文件进行修改、删除、Git 都可以对其进行跟踪。以便在某时某刻追踪和还原。
创建一个版本库:
第一步:选择一个合适的地方,创建一个空目录。
点击进入Git Bash,完成下面的代码,即可实现创建一个空目录:
$ mkdir 文件名,例如$ mkdir tiantian
当然,创建一个空目录也可以在自己选择好的位置自己右击创建一个空目录。
但是,需要注意的是直接使用$ mkdir 文件名命令创建的目录是在Bash默认的目录下创建的。
自然,我就想那如果我想在另外的地方创建一个空目录应该如何操作呢?(当然哈,是使用Bash哈)
首先,我要先进入这个地方,利用$ cd 位置命令实现,例如$ cd F:\,这样子我们就进入了F盘,然后就简单了!再使用mkdir命令创建一个空目录就可以啦!
你要是不相信它在F盘了,支你一招:$ pwd该命令用于显示当前目录。这样子你就可以看到所创建目录的路径啦,呼呼~
第二步:将所创建的空目录变成Git可以管理的仓库。
使用git init命令就可以把一个目录变为Git可以管理的仓库。
嗯。。。这是将一个空目录变成Git可以管理的仓库,那我就联想到了假如一个目录非空,那么可以将它变成一个Git可以管理的仓库吗?如果能变成,也是使用git init命令吗?然后我就自己试验了一下:
事先在桌面上创建了一个目录,里面新建了一个word文档,让它不再是孤家寡人,同样试了试,也可以歪,没有显示有问题。可是令我疑惑的是,为什么它还是显示Initialized empty Git repository in C:/Users/lenovo/Desktop/tiantian/.git/,它还是一个空的仓库,也就是说,仓库空与否,与目录空与否无关?
https://github.com/ABestGirl我的地址哈!
故事未完,待续……