什么是版本控制?
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。这句话怎么理解,我想每个用电脑的人都会有过,想修改word,excel文档等文件的时候,怕修改错了,都会将文件复制一份,以日期命名。这是很常规的操作,有需要的时候就翻一下之前日期的文件查看。很容易会造成文件冗余和忘记每份备份的意义和差异,这时我们就需要用到工具来帮我们做备份,记录每一次的差异,能够方便的在各个版本间转换。
为什么使用版本控制系统?
作为一名程序员,可能会需要保存代码的所有修改版本,做修改的时候想要保存上一次可用,可编译的版本,采用版本控制系统是一个非常好的选择。因为某个文件修改错误,可以将这个文件回退到上一个正常的版本状态。或者是需求变更,取消了需求,可以将整个项目都回退到上一个保存的可用版本。可以通过版本控制系统对比代码修改的细节,记录是谁修改了哪个地方,什么时间改的,记录为什么要做这个修改。使用版本控制系统,意味着你可以对项目做任何的增删,因为恢复到正常版本所需要做的操作非常简单轻松。当然,不管你是一名程序员,还是其他的任何工作,都可以使用版本控制系统来控制你需要编写,操作的任何文件,而不是仅限于文本文件,当然,对于文本文件更加的友好。
选用什么版本控制系统?
相较于其他的版本控制系统,我更倾向于推荐Git。
你除了知道很常用的桌面操作系统windows外,可能还会听说过另外一个操作系统Linux。Linux使用的版本控制系统就是Git。
-
节省时间
-
可靠性高
-
让提交更有意义
-
更高的自由度
-
广泛使用
Git是什么?
直接记录快照,而非差异比较
Git不是基于差异的版本控制。基于差异的意思是,基于一个基本的文件,每个文件随时间逐步累积的差异。在Git中, 每当你保存当前版本时,git会对全部文件创建一个快照并保存这个快照(关于指定文件的一个完全拷贝)的索引。为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git 对待数据更像是一个快照流。
Git保证完整性
Git使用SHA-1散列(hash,哈希)对文件的内容或目录尽心计算得出散列值,用来进行校检和引用。这样当你修改 文件或者是文件损坏,Git都能够发现。
Git只添加数据
Git基本上只会以添加的方式操作数据,这样在很大程度上杜绝了不可逆的操作,一旦使用Git进行版本控制,将文件提到到版本库中,就很难丢失数据,也很难从Git中删除数据。之后会讲到对操作做撤销和回归。
Git的三种状态
-
已修改(modified):表示当前文件已经修改,但是还未提交到版本库
-
已暂存(staged):表示对文件进行标记,下次会提交到快照中
-
已提交(committed):表示数据已经安全地保存到快照中
Git的这三种状态,让我们可以将Git区分为三个不同的区域:工作区、暂存区、Git仓库
我们在工作区中修改文件,修改后的文件状态就在已修改的状态,然后我们已修改需要提交的文件添加到暂存区,就属于已暂存的状态,最后将暂存区的文件提交到Git仓库,就属于已提交的状态。
Git仓库是最重要的地方,这里保存着项目的版本数据,我们可以从Git仓库中还原文件到某一个版本,可以对项目进行整体的回退,比较文件的差异。