Git 自述
Git 是由偉大的電腦程序員Linus Torvalds編寫的一個開源的,分佈式的版本控制系統軟件。git
Git 核心原理
Git 利用底層數據結構,經過指向索引對象的可變指針,保存文件快照。程序員
PS:簡單理解就是git是對象數據庫,把git倉庫裏面文件(源碼,圖片,聲音等文件)轉化成一個對象數據,並記錄在git倉庫裏面全部的文件增刪改操做。算法
Git 工做原理數據庫
1.git倉庫下,被跟蹤的文件全部操做(增刪改)以後,就會對這些文件快照,而後保存到暫存區,當提交更新的時候,就會生成一條操做記錄,保存到git的目錄中去。windows
PS: 這裏的git目錄指項目中.git的目錄,這個目錄在windows上是隱藏的,若是想查看該目錄,請設置文件夾選項,顯示隱藏的文件、文件夾和驅動器。安全
Git 特色服務器
開源:使用c語言編寫的,開放源代碼,任何人都閱讀源碼,自由修改。網絡
靈活:運行性能比Subversion快。(不管是建立分支仍是合併分支都是很是方便快捷)數據結構
易於修復數據,不易損壞數據。分佈式
不佔空間資源。
分佈式:每一個客戶端都有一個獨立於遠程服務器的本地倉庫, 即便是在網絡離線狀態下,依然能夠繼續進行版本管理。
每一個客戶端都是能夠從遠程倉庫克隆完整的倉庫與提交歷史記錄到本地倉庫。
每一個客戶端都擁有屬於本身的訪問權限,不受其餘人影響。
每一個客戶端之間均可以互相推送補丁。
安全:擁有嚴格的代碼提交權限體系。
使用SHA-1算法驗證數據的完整性。
Git 基本概念
工做區:指當前目錄受git控制的目錄。
暫存區:指當前目錄受git控制的目錄內文件改動。
本地倉庫:指本地電腦上創建的git倉庫,經過commit提交文件到本地倉庫。
遠程倉庫:指非本電腦上創建的git倉庫,(遠程主機創建的git倉庫),經過push提交文件遠程倉庫。
Git 分支
master分支,指主分支,通常默認存放穩定版,發佈版本的項目。
PS:建議設置爲受保護的狀態(不能輕易修改),各個分支推送請求不要自動合併master分支。
子分支,能夠有多個分支。
常見分支:feature/topic分支:新功能分支。
release分支:正式發佈分支,可理解爲可執行分支。(類比master分支)
bug/fix/pu:有漏洞,待修復,待改進的分支。
dev:正在開發的分支,各個開發人員各自開發的分支。
next:合併穩定新功能的分支。
maint:除錯維護的分支。
Git 分支獲取
fetch:本地倉庫更新到遠程倉庫的版本,不會合並分支。
此方法須要經過git merge合併分支。
pull:工做區更新到遠程倉庫的版本,自動合併分支並提交。
此方法容易引發文件內容衝突。
Git 分支合併
rebase:無需建立提交,把其餘某一條分支的更改應用到另外一個分支上,(記住,另外一個分支不必定是master分支)
此方法雖然保證線性提交記錄,但偶爾會引發文件內容衝突,會刪除日誌中提交。
merge:建立提交,把當前某一條分支的全部更改都合併到另外一個分支,包括提交歷史。(記住,另外一個分支不必定是master分支)
此方法雖然不會保持線性提交記錄,同時會增長全部人的提交記錄,難以追溯屬於本身的提交記錄。
PS:慎用rebase,避免把rebase共享遠程倉庫。