標籤:style color 使用 strong 檔案 資料
安裝之前我們先來瞭解下git,並且要反問下:我為什麼要使用git?svn用的不是很好嘛,我幹嘛要換?。。。
問1:為什麼需要版本控制系統?
版本控制是一種記錄若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。大部分時候我們使用最頻繁的還是對原始碼檔案的版本控制,其實任何檔案都可以納入版本控制系統。
1).更好備份:相比於將不同版本的檔案以時間等命名儲存備份,使用版本控制系統能節約更多的磁碟空間,因為版本控制系統不是檔案的複本備份,而是差異備份,檔案快照備份等等。
2).更好的回溯:可以將某個檔案回溯到之前的任何一個提交狀態,甚至將整個項目回退到過去的某個時間點。
3).更好的團隊協作:這是我認為最重要的,團隊共同開發一款軟體,如果沒有版本控制,那是不可想象的,簡單點的可以使用檔案傳輸到某一位核心開發人員庫上進行合并,但如果團隊的成員是分散在全國各地的,甚至是世界各地的,比如linux核心的開發,那完全是沒辦法進行的。使用版本控制後,可以比較檔案的變化系統,可以查詢是誰提交了新的更新,並且可以由項目負責人管理提交,進行更新的管理。
問2:相比於svn, git有什麼優勢?
其實這裡真要說出誰比誰好,真的很難說,從不同的角度和不同的需求可能都會有不同的觀點,這裡我也只能說明兩者的適用情景。
svn屬於集中化的版本控制系統:有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的成員通過用戶端串連到這台伺服器,進行檔案上傳和更新。
優點:a.使用簡單,比較符合我們的常規思維(我當年從SVN轉向Git也花費了不少時間)。b.同步代碼比較簡單,只要一步操作即可。
缺點:a.遺失資料的風險:最顯而易見的,由於集中化的特點,如果版本庫的伺服器磁碟發生故障等,你不能保證所有的資料已經有人提取出來了,最壞的情況是徹底的丟失整個項目的所有曆史更改記錄。b.網路中斷的情況下,協作就無法進行了,因為無法串連伺服器進行上傳和更新。
git屬於分布式版本控制系統:用戶端並不只提取最新版本的檔案快照,而是把原始的代碼倉庫完整地鏡像下來。
優點:a.由於任何人每次提取操作,實際上都是一次對代碼倉庫的完整備份,因此近乎所有的操作都可以在本地執行,速度就是相當的快,並且可以在網路斷開的時候操作仍然不受影響,可以頻繁的進行提交更新,等到有網路的時候再上傳到遠端鏡像倉庫就可以了。
缺點:a.每個開發人員都擁有所有的代碼,不利於核心代碼的保密(如果有重要代碼需要保密,則不建議使用git)
git的曆史
當年教授給我們將git曆史的時候,感覺特別有意思,還特崇拜linux之父Linus Torvalds。linux核心開發是來自世界各地的熱衷於開源的人士,開始他們使用的版本控制系統是一個商業產品BitKeeper,並免費給linux使用,但由於後期開發人員越來越龐大等等原因,而BitKeeper畢竟是商業產品,終於在2005年與linux核心開源社區結束了合作關係,Linus Torvalds一氣之下就自己開發了一款適合linux核心開發管理的版本管理系統Git。現在Linus Torvalds其實很少寫代碼了,而是將別人提交的代碼合并到核心中去,更多時間裡,就是在對別人提交的代碼說“Yes”或者“No”,或是指導別人該在什麼地方進行修改。
git在linux的安裝:
這個部分明天更新,因為系統是安裝在內網,需要花費番功夫