一永品、前言
什么是Git?
Git是一個(gè)開源的分布式版本控制系統(tǒng)做鹰,可以有效、高速的處理從很小到非常大的項(xiàng)目版本管理鼎姐。
Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件钾麸。
Torvalds 開始著手開發(fā) Git 是為了作為一種過渡方案來替代 BitKeeper,后者之前一直是 Linux 內(nèi)核開發(fā)人員在全球使用的主要源代碼工具炕桨。開放源碼社區(qū)中的有些人覺得BitKeeper 的許可證并不適合開放源碼社區(qū)的工作饭尝,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統(tǒng)。盡管最初 Git 的開發(fā)是為了輔助 Linux 內(nèi)核開發(fā)的過程献宫,但是我們已經(jīng)發(fā)現(xiàn)在很多其他自由軟件項(xiàng)目中也使用了 Git钥平。例如 很多 Freedesktop 的項(xiàng)目遷移到了 Git 上。
SVN, CVS這類早期的集中式版本控制系統(tǒng)姊途,都有一個(gè)單一的集中管理的服務(wù)器涉瘾,保存所有文件的修訂版本,而協(xié)同工作的人們都通過客戶端連到這臺(tái)服務(wù)器捷兰,取出最新的文件或者提交更新立叛。
集中式版本控制系統(tǒng)
而Git或Mercurial這類分布式版本控制系統(tǒng), 才是現(xiàn)代的首選。因?yàn)榉植际降膬?yōu)勢(shì)絕對(duì)顯著贡茅。
在分布式版本控制系統(tǒng)里秘蛇,客戶端并不只提取最新版本的文件快照其做,而是把代碼倉(cāng)庫(kù)完整地鏡像下來。
這么一來赁还,任何一處協(xié)同工作用的服務(wù)器發(fā)生故障妖泄,事后都可以用任何一個(gè)鏡像出來的本地倉(cāng)庫(kù)恢復(fù)。因?yàn)槊恳淮蔚奶崛〔僮骰嘟剑瑢?shí)際上都是一次對(duì)代碼倉(cāng)庫(kù)的完整備份浮庐。
分布式版本控制系統(tǒng)
現(xiàn)在,Google, Facebook, Microsoft等世界級(jí)公司每天在用Git柬焕。
眾所周知审残,IT界大牛很多, 但是大牛中的大牛稀少。
Linus Torvalds就是其中之一斑举,Linus Torvalds不但開創(chuàng)了Linux操作系統(tǒng)搅轿,而且他發(fā)明了Git版本控制系統(tǒng)。
現(xiàn)在的Android系統(tǒng)底層就是基于更改過的Linux系統(tǒng)富玷,你說Linus Torvalds是不是貢獻(xiàn)極大璧坟。
特點(diǎn)
- 從服務(wù)器上克隆完整的Git倉(cāng)庫(kù)(包括代碼和版本信息)到單機(jī)上。
- 在自己的機(jī)器上根據(jù)不同的開發(fā)目的赎懦,創(chuàng)建分支雀鹃,修改代碼。
- 在單機(jī)上自己創(chuàng)建的分支上提交代碼励两。
- 在單機(jī)上合并分支黎茎。
- 把服務(wù)器上最新版的代碼fetch下來,然后跟自己的主分支合并当悔。
- 生成補(bǔ)陡嫡啊(patch),把補(bǔ)丁發(fā)送給主開發(fā)者盲憎。
- 看主開發(fā)者的反饋嗅骄,如果主開發(fā)者發(fā)現(xiàn)兩個(gè)一般開發(fā)者之間有沖突(他們之間可以合作解決的沖突),就會(huì)要求他們先解決沖突饼疙,然后再由其中一個(gè)人提交溺森。如果主開發(fā)者可以自己解決,或者沒有沖突宏多,就通過儿惫。
- 一般開發(fā)者之間解決沖突的方法,開發(fā)者之間可以使用pull 命令解決沖突伸但,解決完沖突之后再向主開發(fā)者提交補(bǔ)丁肾请。