git簡介_動力節(jié)點(diǎn)Java學(xué)院整理
Git是什么?
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一)。
Git有什么特點(diǎn)?簡單來說就是:高端大氣上檔次!
那什么是版本控制系統(tǒng)?
如果你用Microsoft Word寫過長篇大論,那你一定有這樣的經(jīng)歷:
想刪除一個段落,又怕將來想恢復(fù)找不回來怎么辦?有辦法,先把當(dāng)前文件“另存為……”一個新的Word文件,再接著改,改到一定程度,再“另存為……”一個新文件,這樣一直改下去,最后你的Word文檔變成了這樣:
過了一周,你想找回被刪除的文字,但是已經(jīng)記不清刪除前保存在哪個文件里了,只好一個一個文件去找,真麻煩。
看著一堆亂七八糟的文件,想保留最新的一個,然后把其他的刪掉,又怕哪天會用上,還不敢刪,真郁悶。
更要命的是,有些部分需要你的財務(wù)同事幫助填寫,于是你把文件Copy到U盤里給她(也可能通過Email發(fā)送一份給她),然后,你繼續(xù)修改Word文件。一天后,同事再把Word文件傳給你,此時,你必須想想,發(fā)給她之后到你收到她的文件期間,你作了哪些改動,得把你的改動和她的部分合并,真困難。
于是你想,如果有一個軟件,不但能自動幫我記錄每次文件的改動,還可以讓同事協(xié)作編輯,這樣就不用自己管理一堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動,只需要在軟件里瞄一眼就可以,豈不是很方便?
這個軟件用起來就應(yīng)該像這個樣子,能記錄每次文件的改動:
版本
|
用戶
|
說明
|
日期
|
1
|
張三
|
刪除了軟件服務(wù)條款5
|
7/12 10:38
|
2
|
張三
|
增加了License人數(shù)限制
|
7/12 18:09
|
3
|
李四
|
財務(wù)部門調(diào)整了合同金額
|
7/13 9:51
|
4
|
張三
|
延長了免費(fèi)升級周期
|
7/14 15:17
|
這樣,你就結(jié)束了手動管理多個“版本”的史前時代,進(jìn)入到版本控制的20世紀(jì)。
很多人都知道,Linus在1991年創(chuàng)建了開源的Linux,從此,Linux系統(tǒng)不斷發(fā)展,已經(jīng)成為最大的服務(wù)器系統(tǒng)軟件了。
Linus雖然創(chuàng)建了Linux,但Linux的壯大是靠全世界熱心的志愿者參與的,這么多人在世界各地為Linux編寫代碼,那Linux的代碼是如何管理的呢?
事實(shí)是,在2002年以前,世界各地的志愿者把源代碼文件通過diff的方式發(fā)給Linus,然后由Linus本人通過手工方式合并代碼!
你也許會想,為什么Linus不把Linux代碼放到版本控制系統(tǒng)里呢?不是有CVS、SVN這些免費(fèi)的版本控制系統(tǒng)嗎?因?yàn)長inus堅定地反對CVS和SVN,這些集中式的版本控制系統(tǒng)不但速度慢,而且必須聯(lián)網(wǎng)才能使用。有一些商用的版本控制系統(tǒng),雖然比CVS、SVN好用,但那是付費(fèi)的,和Linux的開源精神不符。
不過,到了2002年,Linux系統(tǒng)已經(jīng)發(fā)展了十年了,代碼庫之大讓Linus很難繼續(xù)通過手工方式管理了,社區(qū)的弟兄們也對這種方式表達(dá)了強(qiáng)烈不滿,于是Linus選擇了一個商業(yè)的版本控制系統(tǒng)BitKeeper,BitKeeper的東家BitMover公司出于人道主義精神,授權(quán)Linux社區(qū)免費(fèi)使用這個版本控制系統(tǒng)。
安定團(tuán)結(jié)的大好局面在2005年就被打破了,原因是Linux社區(qū)牛人聚集,不免沾染了一些梁山好漢的江湖習(xí)氣。開發(fā)Samba的Andrew試圖破解BitKeeper的協(xié)議(這么干的其實(shí)也不只他一個),被BitMover公司發(fā)現(xiàn)了(監(jiān)控工作做得不錯?。?,于是BitMover公司怒了,要收回Linux社區(qū)的免費(fèi)使用權(quán)。
Linus可以向BitMover公司道個歉,保證以后嚴(yán)格管教弟兄們,嗯,這是不可能的。實(shí)際情況是這樣的:
Linus花了兩周時間自己用C寫了一個分布式版本控制系統(tǒng),這就是Git!一個月之內(nèi),Linux系統(tǒng)的源碼已經(jīng)由Git管理了!牛是怎么定義的呢?大家可以體會一下。
Git迅速成為最流行的分布式版本控制系統(tǒng),尤其是2008年,GitHub網(wǎng)站上線了,它為開源項(xiàng)目免費(fèi)提供Git存儲,無數(shù)開源項(xiàng)目開始遷移至GitHub,包括jQuery,PHP,Ruby等等。
歷史就是這么偶然,如果不是當(dāng)年BitMover公司威脅Linux社區(qū),可能現(xiàn)在我們就沒有免費(fèi)而超級好用的Git了。
Linus一直痛恨的CVS及SVN都是集中式的版本控制系統(tǒng),而Git是分布式版本控制系統(tǒng),集中式和分布式版本控制系統(tǒng)有什么區(qū)別呢?
先說集中式版本控制系統(tǒng),版本庫是集中存放在中央服務(wù)器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。
集中式版本控制系統(tǒng)最大的毛病就是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)內(nèi)還好,帶寬夠大,速度夠快,可如果在互聯(lián)網(wǎng)上,遇到網(wǎng)速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。
那分布式版本控制系統(tǒng)與集中式版本控制系統(tǒng)有何不同呢?首先,分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯(lián)網(wǎng)了,因?yàn)榘姹編炀驮谀阕约旱碾娔X上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協(xié)作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題,所有人都沒法干活了。
在實(shí)際使用分布式版本控制系統(tǒng)的時候,其實(shí)很少在兩人之間的電腦上推送版本庫的修改,因?yàn)榭赡苣銈儌z不在一個局域網(wǎng)內(nèi),兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機(jī)。因此,分布式版本控制系統(tǒng)通常也有一臺充當(dāng)“中央服務(wù)器”的電腦,但這個服務(wù)器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。
當(dāng)然,Git的優(yōu)勢不單是不必聯(lián)網(wǎng)這么簡單,后面我們還會看到Git極其強(qiáng)大的分支管理,把SVN等遠(yuǎn)遠(yuǎn)拋在了后面。
CVS作為最早的開源而且免費(fèi)的集中式版本控制系統(tǒng),直到現(xiàn)在還有不少人在用。由于CVS自身設(shè)計的問題,會造成提交文件不完整,版本庫莫名其妙損壞的情況。同樣是開源而且免費(fèi)的SVN修正了CVS的一些穩(wěn)定性問題,是目前用得最多的集中式版本庫控制系統(tǒng)。
除了免費(fèi)的外,還有收費(fèi)的集中式版本控制系統(tǒng),比如IBM的ClearCase(以前是Rational公司的,被IBM收購了),特點(diǎn)是安裝比Windows還大,運(yùn)行比蝸牛還慢,能用ClearCase的一般是世界500強(qiáng),他們有個共同的特點(diǎn)是財大氣粗,或者人傻錢多。
微軟自己也有一個集中式版本控制系統(tǒng)叫VSS,集成在Visual Studio中。由于其反人類的設(shè)計,連微軟自己都不好意思用了。
分布式版本控制系統(tǒng)除了Git以及促使Git誕生的BitKeeper外,還有類似Git的Mercurial和Bazaar等。這些分布式版本控制系統(tǒng)各有特點(diǎn),但最快、最簡單也最流行的依然是Git!
- git忽略特殊文件_動力節(jié)點(diǎn)Java學(xué)院整理
- git遠(yuǎn)程倉庫_動力節(jié)點(diǎn)Java學(xué)院整理
- git修改和刪除功能_動力節(jié)點(diǎn)Java學(xué)院整理
- git分支管理_動力節(jié)點(diǎn)Java學(xué)院整理
- git多人協(xié)作_動力節(jié)點(diǎn)Java學(xué)院整理
- git沖突解決_動力節(jié)點(diǎn)Java學(xué)院整理
- github的使用_動力節(jié)點(diǎn)Java學(xué)院整理
- git標(biāo)簽管理_動力節(jié)點(diǎn)Java學(xué)院整理
- git工作區(qū)和暫存區(qū)_動力節(jié)點(diǎn)Java學(xué)院整理
- git自定義_動力節(jié)點(diǎn)Java學(xué)院整理
相關(guān)文章
詳解百度https認(rèn)證提示"請將您的http站點(diǎn)301重定向到https站點(diǎn)"的解決辦法
對于301重定向這一概念玩SEO的同志們都不陌生了,近些年來https協(xié)議越來越火,百度大大已經(jīng)明確了對https的扶持政策,這篇文章主要介紹了詳解百度https認(rèn)證提示"請將您的http站點(diǎn)301重定向到https站點(diǎn)"的解決辦法,感興趣的小伙伴們可以參考一下2018-12-12近期服務(wù)器出現(xiàn)的安全問題以及防范措施2017.05
近期接到idc商的反饋,最近很多使用windows的主機(jī)都被拿下控制權(quán),直接修改iis等2017-08-08雙至強(qiáng)cpu 32g內(nèi)存服務(wù)器 做了陣列1更換一個壞的硬盤后,沒做陣列
更換掉壞硬盤后,系統(tǒng)重新認(rèn)出primary后,原來的主盤即失效,如果此時再將更換掉的舊盤插入系統(tǒng)就會造成,混亂,導(dǎo)致進(jìn)不入系統(tǒng),撥掉也無用2013-06-06windows2008系統(tǒng)中rsync計劃任務(wù)返回0x1問題處理
本文給大家分享的是小編在給windows2008配置rsync同步的過程中遇到的一個問題,在win03系統(tǒng)下可以正常返回0x0,結(jié)果到了win08系統(tǒng)中就變成了0x1,雖然也同步成功了,但是作為一個完美主義強(qiáng)迫癥患者,堅決不能忍,經(jīng)過一番查證,找到了解決辦法,分享給大家2017-04-04使用cwRsync實(shí)現(xiàn)windows下服務(wù)器文件定時同步備份(附錯誤處理方法)
原來服務(wù)器一直用綠環(huán)ftp同步工具,發(fā)現(xiàn)一些大文件經(jīng)常無法同步,所以這里推薦使用cwRsync2012-06-06DaemonSet服務(wù)守護(hù)進(jìn)程的使用場景
這篇文章主要為大家介紹了使用DaemonSet服務(wù)守護(hù)進(jìn)程的使用場景講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多計步2022-03-03