[一、Git總體介紹]
本章導航----Git總體學習思惟導圖
git
[二、版本控制簡介]
本章導航----版本控制思惟導圖
程序員
[版本控制簡介]
版本控制是維護項目/工程的標準作法,能追蹤項目/工程從創建到完成的過程,是一種記錄若干文件內容變化的方法,便於查看項目文件內容變化以及版本修訂狀況的系統。github
[爲何要學習版本控制]
a:備份多個版本,浪費存儲空間,花費時間長。
b:難以恢復至之前的歷史版本,容易引起BUG,解決代碼衝突困難。
c:難於追溯問題代碼的修改人和修改時間、修改內容、日誌信息。
d:項目升級,版本發佈困難。
e:沒法進行權限控制。 好比 測試人員:只讀;開發人員:模塊權限。
f:開發團隊在工做過程當中沒法多條生產線同時推動任務,效率慢等。安全
[經常使用的版本控制工具]
集中式版本控制工具表明:SVN(所謂的集中式就是文件都集中保存在一臺服務器上)
分佈式版本控制工具表明:Git(所謂的分佈式就是文件保存在多臺服務器上)服務器
[三、Git與SVN比較]
本章導航----Git與SVN思惟導圖
分佈式
[Git-與SVN記錄文件的差別]
Git和其餘版本控制系統的主要差異在於,Git 只關心文件的總體是否發生變化。而SVN這類版本控制系統則只關心文件內容的具體差別。SVN這類系統每次記錄有哪些文件做了更新,以及都更新了哪些行的什麼內容。然而 Git 並不保存這些先後變化的差別數據。實際上,Git更像是把 變化的文件 做一個快照後,記錄在一個微型的文件系統中。每次提交更新時,它會縱覽一遍全部文件的指紋信息(Hash值)並對文件做一快照,而後保存一個指向此次快照的索引。爲提升性能,若文件沒有變化,Git 不會再次保存,而只對上次保存的快照做一連接。svn
[Git-優勢]
a:分佈式,強調個體
b:公共服務器壓力和數據量都不會太大
c:離線工做,每一個人的本地倉庫,大部分操做在本地庫完成,不須要聯網(SVN作不到)
d:分支操做很是快捷流暢(重點介紹)
e:能夠吃後悔藥, 儘量添加數據而不是刪除或修改數據(刪除或修改不容易恢復,而每次添加一個版本,歷史版本都有)
f:速度快、靈活, 有能力高效管理相似 Linux
g:內核同樣的超大規模項目(速度和數據量)工具
[SVN-簡介]
SVN 屬於集中式版本管理控制系統,服務器中保存了全部文件的不一樣版本,而協同工做人員經過鏈接svn服務器,提取出最新的文件,獲取提交更新。Subversion 項目的初衷是爲了替換當年開源社區最爲流行的版本控制軟件CVS,在CVS的功能的基礎上有不少的提高同時也能較好的解決CVS系統的一些不足。性能
[SVN-缺點]
集中管理方式在必定程度上看到其餘開發人員在幹什麼,而管理員也能夠很輕鬆掌握每一個人的開發權限。可是相較於其優勢而言,集中式版本控制工具缺點很明顯:
a:服務器單點故障;
b:必須鏈接在SVN服務器上,不然不能提交,對比,還原等;學習
[四、Git本地工做區域]
本章導航----Git本地工做區域思惟導圖
[五、Git與代碼託管平臺]
本章導航-----Git與代碼託管平臺思惟導圖
b:GitHub:是一個基於Git的遠程代碼託管平臺(網站),能夠在github上創建一個遠程庫,能夠將本地庫的代碼提交到遠程庫,這樣你的每次提交,別人也均可以看到你的代碼,同時別人也能夠幫你修改你的代碼,這種開源的方式很是方便程序員之間的交流和學習.
[代碼託管平臺]
局域網環境:GitLab(可自行搭建)
外網環境:GitHub,碼雲
[本地庫和遠程庫]
a:團隊內部協做開發
b:遠程跨團隊協做開發