Git上手:Git掃盲區

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 文件狀態
已跟蹤:當前目錄下的文件已受git版本控制。
PS: 已跟蹤文件下有三種狀態。
          已提交:已跟蹤文件已經保存在本地git數據庫中。
         
已修改:已跟蹤文件有改動,但尚未提交保存。
          已暫存:已跟蹤文件中的已修改文件放在下次提交時要保存的清單中。
未跟蹤:當前目錄下的文件未受git版本控制。
 

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共享遠程倉庫。


補充:使用SVN 仍是 Git。
           若是項目參與的人員很少的話,規模不大的項目,保密性強,對Git不熟悉的團隊,建議使用SVN。
           若是項目參與的人員多,規模大的項目,保密性不強,對Git熟悉的團隊,建議使用GIt。(這裏不是說GIt的保密性不強,而是項目只能在特定環境下進行開發,而且只能是本身搭建遠程
倉庫,不是使用第三方代碼託管服務所搭建的遠程倉庫。)
 
總結:強烈推薦使用git,由於git是一個性能卓越的版本控制系統。
相關文章
相關標籤/搜索