一、版本控制概念的认识
1、什么是版本控制:
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。修改文件时,版本控制系统会记录并保存每个更改。这使您可以随时还原代码的先前版本,即使代码误删、任意改动都可以轻松实现追本溯源。事实上可以对任何类型的文件进行版本控制。有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。2、版本控制解决的问题:
A、可针对大量的文件做版本追踪
如果没有版本控制系统,您将无法使用不同的日期和/或名称(例如12-02--monkey_code.php;12-03--monkey_code.php)手动保存文件的多个版本。当您处理数百个文件时,此方法既耗时又不切实际。B、多人文件重命名避免覆盖
重命名文件也不会为您提供进行更改或更改对象的任何上下文。当多个团队成员编辑同一文件时,可能会覆盖,并且很难跟上最新的文件版本。C、文件修改历史跟踪
使用Git,您可以轻松地跟踪源代码的修订历史记录并跟踪更改。您还可以及时返回以了解版本如何更改以及谁进行了更改。当文件的最新版本位于共享存储库中时,Git将防止团队中拥有较旧版本文件的任何人无意间覆盖。3、本地版本控制系统
许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意外的文件。4、集中化的版本控制系统
集中化的版本控制系统主要解决在不同系统上的开发者协同工作。集中化的版本控制系统(CentralizedVersionControlSystems,简称CVCS)。这类系统,诸如CVS、Subversion以及Perforce等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个CVCS要远比在各个客户端上维护本地数据库来得轻松容易。集中化的版本控制的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。5、分布式版本控制系统
分布式版本控制系统(DistributedVersionControlSystem,简称DVCS)。在这类系统中,像Git、Mercurial、Bazaar以及Darcs,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。二、Git基本常识
1、什么是GitHub:
如果你是一枚Coder,但是你不知道Github,那么我觉得你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工。
GitHub是一个面向开源及私有软件项目的托管平台,主要提供基于git的版本托管服务,故名GitHub。github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。GitHub于年4月10日正式上线,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过万,托管版本数量也是非常之多,其中不乏知名开源项目RubyonRails、jQuery、python等。历史事件:
年6月4日,微软宣布,通过75亿美元的股票交易收购代码托管平台GitHub。年05月,《个人电脑杂志》网站报道,GitHub正遭到一名黑客的入侵。据称,这名黑客先擦除代码资源库,然后向用户索要赎金,作为恢复数据的交换。Github可以用来创建我们git的远程仓库,先要再Github上注册一个账号。
github