疑問:
git是做什么的?
git是如何發(fā)展的?
一、git是做什么的?
git是版本控制器。什么是版本控制器?就是記錄每一次修改的內(nèi)容的一個(gè)工具。舉例來說,
你的操作 git記錄
今天你新建了一個(gè)txt文本。 x年x月x日x人 新建了一個(gè)txt文件。
一天后你在txt文本上寫了“aa”。 x年x月x日x人 在txt上添加了文字“aa”。
兩天后你在txt上寫了“bb”。 x年x月x日x人 在txt上添加了文字“bb”。
不小心把本地文件txt刪除了,還可以恢復(fù)文件。
現(xiàn)在是不是對(duì)git有了一個(gè)初步的了解?
二、git是如何發(fā)展來的?
人們有記錄版本的需要,但是往往不會(huì)一下子就想到這種完善的方式。git的發(fā)展也是經(jīng)歷了很多過程的。
1、本地版本控制系統(tǒng)
有沒有這樣的經(jīng)歷?在做一個(gè)時(shí)間比較長的項(xiàng)目的時(shí)候,在更改某個(gè)功能或文件之前自己先拷貝一份作為備份,然后在進(jìn)行修改。為了區(qū)別,還在每個(gè)拷貝上加上時(shí)間和備注。但是,想一想,每次改變只是幾個(gè)文件,卻要復(fù)制整個(gè)項(xiàng)目,如果項(xiàng)目很大,好幾個(gè)G,久而久之,不是太浪費(fèi)硬盤容量了嗎?要是能每次只記錄修改了的文件,不是大大的節(jié)省了容量?這樣,就誕生了“本地版本控制系統(tǒng)”。他就是每次記錄修改了哪些文件,并記錄到本地。但是,一旦硬盤損壞,那么文件都會(huì)不復(fù)存在了。
2、集中化的版本控制系統(tǒng)
加入有三個(gè)人協(xié)同開發(fā)一個(gè)項(xiàng)目。每個(gè)人記錄自己改變了的文件到本地,下班前,三個(gè)人把各自工作合起來的時(shí)候就比較困難了。只能把工作都匯集到一臺(tái)電腦上,然后人工合并。容易出錯(cuò)不說,合并工作也是相當(dāng)耗時(shí)費(fèi)力。而集中化的版本控制系統(tǒng)就是為了解決協(xié)同開發(fā)的問題誕生的。
集中化的版本控制系統(tǒng)都有一個(gè)專門記錄更改的服務(wù)器。每一個(gè)項(xiàng)目的開發(fā)者連接到該服務(wù)器,更新最新的項(xiàng)目,提交更改。

這么做得好處是:
- 每個(gè)人都可以看到其他人都在做什么。
- 管理員可以掌握每個(gè)人的開發(fā)權(quán)限。
- 協(xié)同開發(fā)方便。
缺點(diǎn):
- 一旦服務(wù)器掛掉或者硬盤壞掉,那么項(xiàng)目就沒有辦法再次恢復(fù)了。
3、分布式版本控制系統(tǒng)
為了解決集中式管理系統(tǒng)的缺點(diǎn),分布式版本管理系統(tǒng)應(yīng)運(yùn)而生。分布式管理系統(tǒng)也是有一個(gè)服務(wù)器作為版本控制的主要服務(wù)器。但是,PC端的每一次拉取或者更新操作就會(huì)把最新的項(xiàng)目備份到PC端。如果有三個(gè)人協(xié)同開發(fā),那么就有四份項(xiàng)目的備份,一份在服務(wù)器,三份在PC端。這樣即使服務(wù)器壞掉,我們還是可以恢復(fù)文件的。
Git就是一種分布式的版本控制系統(tǒng)。