Git教程 1 Git簡介

2021-10-02 08:22:44 字數 3389 閱讀 1509

目錄

1. 簡介

2. git的誕生

3. 集中式 vs. 分布式

git是目前世界上最先進的分布式版本控制系統(沒有之一)。git的特點是高階大氣上檔次!

那什麼是版本控制系統?如果你用microsoft word寫過長篇大論,那你一定有這樣的經歷:想刪除乙個段落,又怕將來想恢復找不回來怎麼辦?有辦法,先把當前檔案「另存為……」乙個新的word檔案,再接著改,改到一定程度,再「另存為……」乙個新檔案,這樣一直改下去,最後你的word文件變成了這樣:

過了一周,你想找回被刪除的文字,但是已經記不清刪除前儲存在哪個檔案裡了,只好乙個乙個檔案去找,真麻煩。看著一堆亂七八糟的檔案,想保留最新的乙個,然後把其他的刪掉,又怕哪天會用上,還不敢刪,真鬱悶。

更要命的是,有些部分需要你的財務同事幫助填寫,於是你把檔案copy到u盤裡給她(也可能通過email傳送乙份給她),然後,你繼續修改word檔案。一天後,同事再把word檔案傳給你,此時,你必須想想,發給她之後到你收到她的檔案期間,你作了哪些改動,得把你的改動和她的部分合併,真困難。

於是你想,如果有乙個軟體,不但能自動幫我記錄每次檔案的改動,還可以讓同事協作編輯,這樣就不用自己管理一堆類似的檔案了,也不需要把檔案傳來傳去。如果想檢視某次改動,只需要在軟體裡瞄一眼就可以,豈不是很方便?

這個軟體用起來就應該像這個樣子,能記錄每次檔案的改動:

這樣,你就結束了手動管理多個「版本」的史前時代,進入到版本控制的20世紀。

很多人都知道,linus在2023年建立了開源的linux,從此,linux系統不斷發展,已經成為最大的伺服器系統軟體了。

linus雖然建立了linux,但linux的壯大是靠全世界熱心的志願者參與的,這麼多人在世界各地為linux編寫**,那linux的**是如何管理的呢?

事實是,在2023年以前,世界各地的志願者把源**檔案通過diff的方式發給linus,然後由linus本人通過手工方式合併**!

你也許會想,為什麼linus不把linux**放到版本控制系統裡呢?不是有cvs、svn這些免費的版本控制系統嗎?因為linus堅定地反對cvs和svn,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用。有一些商用的版本控制系統,雖然比cvs、svn好用,但那是付費的,和linux的開源精神不符。

不過,到了2023年,linux系統已經發展了十年了,**庫之大讓linus很難繼續通過手工方式管理了,社群的弟兄們也對這種方式表達了強烈不滿,於是linus選擇了乙個商業的版本控制系統bitkeeper,bitkeeper的東家bitmover公司出於人道主義精神,授權linux社群免費使用這個版本控制系統。

安定團結的大好局面在2023年就被打破了,原因是linux社群牛人聚集,不免沾染了一些梁山好漢的江湖習氣。開發samba的andrew試圖破解bitkeeper的協議(這麼幹的其實也不只他乙個),被bitmover公司發現了(監控工作做得不錯!),於是bitmover公司怒了,要收回linux社群的免費使用權。

linus可以向bitmover公司道個歉,保證以後嚴格管教弟兄們,嗯,這是不可能的。實際情況是這樣的:

linus花了兩周時間自己用c語言寫了乙個分布式版本控制系統,這就是git!乙個月之內,linux系統的原始碼已經由git管理了!牛是怎麼定義的呢?大家可以體會一下。

git迅速成為最流行的分布式版本控制系統,尤其是2023年,github**上線了,它為開源專案免費提供git儲存,無數開源專案開始遷移至github,包括jquery,php,ruby等等。

歷史就是這麼偶然,如果不是當年bitmover公司威脅linux社群,可能現在我們就沒有免費而超級好用的git了。

linus一直痛恨的cvs及svn都是集中式的版本控制系統,而git是分布式版本控制系統,集中式和分布式版本控制系統有什麼區別呢?

先說集中式版本控制系統,版本庫是集中存放在**伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從**伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給**伺服器。**伺服器就好比是乙個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。

集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在區域網內還好,頻寬夠大,速度夠快,可如果在網際網路上,遇到網速慢的話,可能提交乙個10m的檔案就需要5分鐘,這還不得把人給憋死啊。

那分布式版本控制系統與集中式版本控制系統有何不同呢?首先,分布式版本控制系統根本沒有「**伺服器」,每個人的電腦上都是乙個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有乙個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了檔案a,你的同事也在他的電腦上改了檔案a,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦裡都有完整的版本庫,某乙個人的電腦壞掉了不要緊,隨便從其他人那裡複製乙個就可以了。而集中式版本控制系統的**伺服器要是出了問題,所有人都沒法幹活了。

在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在乙個區域網內,兩台電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一台充當「**伺服器」的電腦,但這個伺服器的作用僅僅是用來方便「交換」大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

當然,git的優勢不單是不必聯網這麼簡單,後面我們還會看到git極其強大的分支管理,把svn等遠遠拋在了後面。

cvs作為最早的開源而且免費的集中式版本控制系統,直到現在還有不少人在用。由於cvs自身設計的問題,會造成提交檔案不完整,版本庫莫名其妙損壞的情況。同樣是開源而且免費的svn修正了cvs的一些穩定性問題,是目前用得最多的集中式版本庫控制系統。

除了免費的外,還有收費的集中式版本控制系統,比如ibm的clearcase(以前是rational公司的,被ibm收購了),特點是安裝比windows還大,執行比蝸牛還慢,能用clearcase的一般是世界500強,他們有個共同的特點是財大氣粗,或者人傻錢多。

微軟自己也有乙個集中式版本控制系統叫vss,整合在visual studio中。由於其***的設計,連微軟自己都不好意思用了。

分布式版本控制系統除了git以及促使git誕生的bitkeeper外,還有類似git的mercurial和bazaar等。這些分布式版本控制系統各有特點,但最快、最簡單也最流行的依然是git!

Git學習之路(1) Git簡介

git是一款免費 開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案,可以有效 高速的處理從很小到非常大的專案版本管理。git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體 git是由linus編寫的,這個名字應該不會陌生,著名...

Git學習之路(1) Git簡介

git是一款免費 開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案,可以有效 高速的處理從很小到非常大的專案版本管理。git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體 git是由linus編寫的,這個名字應該不會陌生,著名...

Git學習筆記1 Git原理簡介

git 是乙個分布式的版本控制工具,如果想用github等版本控制系統,核心就是git,下面簡單介紹一些git的基礎原理,原文 git不像傳統的vcs將程式按檔案存放管理 如下圖 當有檔案有改動時,下個version會將整個改動的file複製。這樣的管理方式既費事,又占用大量冗餘空間。而git訪問方...