先看一张图感受一下:
之前多次遇到过这种情况,想改不敢改,怕改错。只好复制一份再改。单一的如上图的工程还好。如果遇到大型的,有各种文件的工程,就不好办了。或者多人协作开发的时候,更难控制。于是有了版本控制器这种东西。
一般的版本控制器是基于中央服务器的,所有的版本最终汇总到中央服务器。那么要求客户端要能连上中央服务器,而且中央服务器的压力也很大。中央服务器出现问题,项目就悲剧了。
于是有了像git这样的分布式版本控制器。
git宣称是不用联网就可以实现版本控制,一开始不理解,不用联网如何完成版本更新?其实,这里的分布式与集中式的区别,在于分布式中,每个本地机上都是完全拷贝整个项目。也就是,每个本地库都可以作为一个备份。
我们也可以考虑在Internet上建一个仓库,起到类似集中式的服务器的功能。有如github这样的网站,可以托管我们的远程库。
关于git的简史,底层架构,可见 http://blog.jobbole.com/25775/
这里记录一些简单的git运用命令。
安装:
git现在的windows有可一键安装的版本,可Google之。
使用:
先理清几个概念
工作区指本地的工作文件夹,版本库里包括stage(暂存区)与master(主分支)。
其中工作区存放文本格式文件,通过add往暂存区里加文件,再通过暂存区统一往master提交。
这里的stage作用是缓冲修改,有点像master的秘书,整理后统一commit。
前期准备工作:
首先要建立一个存放文件的文件夹,作为上图中的工作区,并在工作区中用命令建立版本库。
在版本文件夹下,通过git shell ,键入:
git init
自动在此建立git版本库。
打开文件夹我们会发现文件夹下多了一个.git的文件夹。说明在此配置了一个git仓库。需要注意的是,当前文件夹下的文件并非都存于库中,只有通过git add的文件才与仓库有关系。
如之前图中所示,我们要把工作区中文件通过ADD提交到缓存,再通过commit提交到master主分区。
git add new.txt
git commit -m “modify the XX function”
如上,其中commit时要加注释,说明此次修改的原因。
还有一些简单的常用命令:
git status 查看仓库状态
git log 查看提交日志
git diff 查看当前文件与当前版本差异
git rm 从仓库中删除文件,可先通过系统-bash删除,再如此删除。
git add 加入仓库,或提交修改到暂存区
git commit 提交修改到主分支
之前的操作都是在本地仓库进行。现在我们希望在Internet上也放一个远程仓库,并且作为主仓库来管理其他仓库。也就是在Internet上放一个24小时开机提供服务仓库。我们不需要自己去建一个服务器,github等网站有提供这些服务。
常用github操作
登陆 www.github.com 注册后,新建一个远程仓库,按照提示,push上去一个本地的仓库:
git remote add origin http://324234 #这里为远程仓库的地址
git push -u origin master
#这里的origin为远程仓库的别名,使用push命令把当前的本地仓库推到远程仓库。
再到github上就能看到更新了的仓库信息。
把远程仓库更新下来则可用pull操作。
同样的,我们在github上还能使用别人的仓库。
想要把别人的开源代码拿下来,首先要fock一个分支到远程仓库,使得这个库成为自己的远程库。再用clone操作,用远程库新建一个本地库。如果想要修改别人的库,需要发送一个pull require。如果对方同意,就可以合并到对方的库。