八個字形容git技術: 公司必備,一定要會
一.git概念:
git是一個免費的,開源的分散式版本控制系統,可以快速高效的處理從小型到大型的專案
二.什麼是版本控制:
版本控制是一種一個記錄一個或若個問價那內容變化,以便將來查詢你特定版本修訂情況的系統
三.為什麼要使用版本控制:
軟體開發中採用版本控制系統是個明智的選擇
有了他你就可以將某個檔案回溯到之前的狀態,甚至將整個專案都退回過去某個時間點的狀態
就算你亂來一氣把整個專案中的檔案改的改刪的刪,你也照樣可以輕鬆恢復到原先的樣子
但額外增加的工作量卻微乎其微,你可以比較檔案的變化細節,查出最後是誰修改了那個地方,從而找出導致怪異問題出現的原因
四. 版本控制系統的分類
4.1 集中化的版本控制系統:代表svN
集中化的版本控制系統諸多如cvs,svn以及perforce等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本
而協同工作的人們都通過客戶端連線到這臺伺服器,取出最新的檔案或者提交更新,多年以來,這已成為版本控制系統的標準做法
這個做法帶來了許多好處,現在每個人都可以在一定程度上看到專案中的其他人正在做些什麼
而管理員也可以輕鬆掌控每個開發者的許可權,並且管理一個集中化的版本控制系統,要遠比在各個客戶端上維護本地資料庫來的輕鬆容易,
事分兩面,有好有壞.這麼做最明顯的缺點是中央伺服器的單點故障,如果伺服器崩了一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作
4.2 分散式的版本控制系統
由於上面集中化版本控制系統的那些缺點,於是分散式版本控制系統面世了
在這類系統中,向git,bitkeeper等,客戶端並不只提取最新版本的檔案快照,而是把程式碼倉庫完整的映象下來(每個客戶端都是伺服器)
更近一步,許多這類系統都可以指定和若干不同的遠端程式碼倉庫進行互動,這樣你就可以在同一專案中分別和不同工作小組的人相互協作
這句話怎麼解釋呢.如圖:
分散式的版本控制系統在管理專案時存放的不是專案版本在版本之間的差異,它存的是索引(所需磁碟空間很少所以沒課客戶端都可以放下整個專案的歷史記錄)
如果是集中化版本控制系統有1到100版本 那麼想要回退到1版本只能從100打補丁到99 然後從99打補丁到98 ...所以要回滾到一會非常慢
如果是分散式版本控制系統: 最開始有個版本一 然後有個版本二下一次儲存會將版本一和版本二的索引進行儲存 所有到100也可以通過索引來回滾到版本一 但是後面越來越多 所以底層實現了極致的壓縮演算法,解壓演算法,這樣會站的記憶體非常小