第一章 :Git 介紹
第一章 :Git 介紹
1:Git 簡介
1.1:版本控制
什麼是版本控制 ?
我們為什麼要關心它呢?版本控制是一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。
為什麼要使用版本控制 ?
軟體開發中採用版本控制系統是個明智的選擇。有了它你就可以將某個檔案回溯到之前的狀態,甚至將整個專案都回退到過去某個時間點的狀態。就算你亂來一氣把整個專案中的檔案改的改刪的刪,你也照樣可以輕鬆恢復到原先的樣子。但額外增加的工作量卻微乎其微。你可以比較檔案的變化細節,查出最後是誰修改了哪個地方,從而找出導致怪異問題出現的原因,又是誰在何時報告了某個功能缺陷等等。
版本控制工具應該具備的功能
協同修改
多人並行不悖的修改伺服器端的同一個檔案。
資料備份
不僅儲存目錄和檔案的當前狀態,還能夠儲存每一個提交過的歷史狀態。
版本管理
在儲存每一個版本的檔案資訊的時候要做到不儲存重複資料,以節約儲存空 間,提高執行效率。這方面 SVN 採用的是增量式管理的方式,而 Git 採取了文 件系統快照的方式。
許可權控制
對團隊中參與開發的人員進行許可權控制。
對團隊外開發者貢獻的程式碼進行稽核——Git 獨有。
歷史記錄
檢視修改人、修改時間、修改內容、日誌資訊。
將本地檔案恢復到某一個歷史狀態。
分支管理
允許開發團隊在工作過程中多條生產線同時推進任務,進一步提高效率。
集中化的版本控制系統
集中化的版本控制系統諸如 CVS,SVN 以及 Perforce 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過客戶端連到這臺伺服器,取出最新的檔案或者提交更新。多年以來,這已成為版本控制系統的標準做法。
這種做法帶來了許多好處,現在,每個人都可以在一定程度上看到專案中的其他人正在做些什麼。而管理員也可以輕鬆掌控每個開發者的許可權,並且管理一個集中化的版本控制系統; 要遠比在各個客戶端上維護本地資料庫來得輕鬆容易。
事分兩面,有好有壞。這麼做最顯而易見的缺點是中央伺服器的單點故障。
如果伺服器當機一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作
並不是說伺服器故障了就沒有辦法寫程式碼了,只是在伺服器故障的情況下,編寫的程式碼是沒有辦法得到保障的.試想 SVN 中央伺服器掛機一天.你還拼命寫了一天程式碼,其中 12 點之前的程式碼都是高質量可靠的,而且有很多閃光點.而12 點之後的程式碼由於你想嘗試一個比較大膽的想法,將程式碼改的面目全非了.這樣下來你 12 點之前做的工作也都白費了 有記錄的版本只能是 SVN 伺服器掛掉時儲存的版本!要是中央伺服器的磁碟發生故障,碰巧沒做備份,或者備份不夠及時,就會有丟失資料的風險。最壞的情況是徹底丟失整個專案的所有歷史更改記錄,而被客戶端偶然提取出來的儲存在本地的某些快照資料就成了恢復資料的希望。但這樣的話依然是個問題,你不能保證所有的資料都已經有人事先完整提取出來過。只要整個專案的歷史記錄被儲存在單一位置,就有丟失所有歷史更新記錄的風險。
分散式的版本管理系統
於是分散式版本控制系統面世了。在這類系統中,像 Git,BitKeeper 等,客戶端並不只提取最新版本的檔案快照,而是把程式碼倉庫完整地映象下來。這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個映象出來的本地倉庫恢復。因為每一次的提取操作,實際上都是一次對程式碼倉庫的完整備份更進一步,許多這類系統都可以指定和若干不同的遠端程式碼倉庫進行互動。籍此,你就可以在同一個專案中分別和不同工作小組的人相互協作。分散式的版本控制系統在管理專案時 存放的不是專案版本與版本之間的差異.它存的是索引(所需磁碟空間很少 所以每個客戶端都可以放下整個專案的歷史記錄)。
分散式的版本控制系統出現之後,解決了集中式版本控制系統的缺陷:
1:斷網的情況下也可以進行開發(因為版本控制是在本地進行的)。
2:使用 GitHub 進行團隊協作,哪怕 GitHub 掛了 每個客戶端儲存的也都是整個完整的專案(包含歷史記錄的)。
1.2 Git 和 SVN 優缺點介紹
集中式 SVN
svn因為每次存的都是差異 需要的硬碟空間會相對的小一點 可是回滾的速度會很慢
優點:
程式碼存放在單一的伺服器上 便於專案的管理
缺點:
伺服器當機: 員工寫的程式碼得不到保障
伺服器炸了: 整個專案的歷史記錄都會丟失
分散式 Git
git每次存的都是專案的完整快照 需要的硬碟空間會相對大一點
(Git團隊對程式碼做了極致的壓縮 最終需要的實際空間比svn多不了太多 可是Git的回滾速度極快)
優點:
完全的分散式
大部分操作在本地完成,不需要聯網
完整性保證
儘可能新增資料而不是刪除或修改資料
分支操作非常快捷流暢
與 Linux 命令全面相容
缺點:
學習起來比SVN陡峭(命令列比較多)
1.3 Git 圖解
2:Git 安裝
2.1:下載
2.2:安裝步驟
沒有太多的要求,一直點選 Next 就好了
3:Git 初始化配置
3.1:使用者資訊
第一次要配置的是你個人的使用者名稱和電子郵件。這兩條配置在每次提交都會引用這兩條配置資訊,說明誰提交了更新,所以會隨更新內容一起被永久納入歷史記錄:
$ git config --global user.name "username"
$ git config --global user.email "userEmail.@163.com"
//檢視已有的配置資訊可以使用
git config --list
4:Git 結構
4.1: 結構
4.2: Git 和程式碼託管中心
程式碼託管中心的任務:維護遠端庫。
區域網下:GitLab 伺服器。
外網環境下:GitHub、碼雲。
4.3:本地庫和遠端庫
團隊內部協作
跨團隊協作
相關文章
- git介紹Git
- Git元件介紹Git元件
- Git--介紹Git
- Git 分支操作介紹Git
- Git詳細介紹Git
- 第一章 爬蟲介紹爬蟲
- Git_簡單介紹Git
- Git版本管理介紹(一)Git
- git引入_版本控制介紹Git
- 精通比特幣(第一章)【介紹】比特幣
- 第一章---資料庫介紹資料庫
- Git發展簡單介紹Git
- Git ORIG_HEAD用法介紹Git
- JB的git之旅-git介紹及GitHub配置教程Github
- 『現學現忘』Git基礎 — 3、Git介紹Git
- Git 介紹與常用命令Git
- 「Git」常用工作流介紹Git
- JB的git之旅-gitlab ci介紹Gitlab
- 【譯】WebSocket協議第一章——介紹(Introduction)Web協議
- 2017 Material design 第一章第一節《介紹》Material Design
- 螞蟻部落Git教程簡單介紹Git
- git使用系列01-->版本控制介紹Git
- BACnet初學者教程,第一章:BACnet/IP介紹
- JB的git之旅--.gitlab-ci.yml介紹Gitlab
- Hadoop 從 0 到 1 學習 ——第一章 Hadoop 介紹Hadoop
- Git學習1 --- 版本控制工具詳細介紹Git
- 版本管理工具Git(一)簡要介紹Git
- 程式碼管理工具介紹——Git與GitHubGithub
- 如何克服解決Git衝突的恐懼症?(Git入門介紹)Git
- Cz工具集使用介紹 - 規範Git提交說明Git
- 簡單介紹Git合併分支的流程步驟Git
- IEC61850教程,第一章:IEC 61850 基礎知識介紹
- 第一章 Net 5.0 快速開發框架 YC.Boilerplate--框架介紹框架
- 第一章:Hadoop生態系統及執行MapReduce任務介紹!Hadoop
- 《Google軟體測試之道》 第一章google軟體測試介紹Go
- GIT學習筆記——第一章Git筆記
- 程式碼管理工具-Git基礎介紹及常用技巧Git
- 介紹鮮為人知但功能強大的 Git 技術Git