Git 分布式版本控制系統

      網友投稿 678 2022-05-30

      目錄

      文章目錄

      目錄

      Git 分布式版本控制系統

      Git 的基本概念

      Git 的倉庫結構

      Git 的核心對象

      Git 的數據結構

      Git Flow

      參考文檔

      Git 分布式版本控制系統

      Git 是一個免費的、開源的分布式版本控制系統(Version Control System),本質是一個內容尋址文件系統(Content addressable filesystem)。即:Git 的核心是一個簡單的鍵值對數據庫(Simple key-value data store)。

      Git 分布式版本控制系統

      你可以向 Git 插入任意類型的內容,它會返回一個鍵值(Hash,SHA-1 散列),通過該鍵值可以在任意時刻再次檢索該內容,而這些數據全部是存儲在 .git/objects 目錄內。

      Git 的基本概念

      Working Area:本地工作區,對應的文件狀態是 Modified(已修改)但還沒保存到數據庫中。

      Index/Stage:本地暫存區,對應的文件狀態是 Staged,Git 已經對該文件做了標記,下次提交就知道要包含它了。

      Local Repository:本地倉庫,存放本地歷史版本信息。對應的文件狀態是 Committed,文件已經安全的保存在本地數據庫中。

      Remote Repository:遠程倉庫。

      HEAD:當前版本指針,上一個版本是 HEAD^,以此類推。

      Git 的倉庫結構

      一個完整的 Git 倉庫也就是 .git 目錄,在這個 Local Repo 中存儲了 Git 所有的模型對象。

      Git 的核心對象

      Git 主要有四個對象,分別是 Blob、Tree、Commit、Tag 他們都用 SHA-1 Key 進行命名。

      Key:是一個由 40 個十六進制字符組成的字符串。前兩個字符用于命名子目錄,余下的 38 個字符則用作文件名,這樣處理是因為檢索優化策略,提高文件系統效率。

      Value:

      Commit:Actual git commits(提交)= Tree + Blob 的 Snapshot(被追蹤的最頂層的 Tree)。

      Tree:Directoy(目錄樹),就是一個文件夾。

      Blob:file content(文件內容),就是單個的文件。

      Tag:是一個 “固化的分支”,一旦打上 tag 之后,這個 tag 代表的內容將永遠不可變,因為 tag 只會關聯當時版本庫中最后一個 commit 對象。

      注:Branch 與 Tag 不同,Branch 會隨著不斷的提交,內容會不斷的改變,因為分支指向的最后一個 Commit 不斷改變。所以一般應用或者軟件版本的發布一般用 Tag。

      Git 的數據結構

      Git 記錄了每個 Snapshot 的 Parent,也就是當前這個目錄的上一個版本。那么 Snapshot 迭代更新的過程就可以表示為一個有向無環圖。

      每個快照都對應了一次 Commit,這就是 Git 的數據模型:

      class commit { array parents String author String message Tree snapshot }

      1

      2

      3

      4

      5

      6

      Git Flow

      最簡單的 Git Flow 主要有三步:

      在工作區修改文件。

      將文件的快照放入暫存區。

      找到暫存區的文件,將快照永久性存儲到 Local Repo。

      詳細的說,Git Flow 的項目存在兩個長期分支。

      主分支(Master branch):存放對外發布的版本,任何時候在這個分支拿到的,都是穩定的分布版;

      開發分支(Develop branch):用于日常開發,存放最新的開發版。

      其次,項目存在三種短期分支,一旦完成開發,它們就會被合并進 Develop 或 Master branch,然后被刪除:

      功能分支(Feature branch)

      補丁分支(Hotfix branch)

      預發分支(Release branch)

      Git Flow 的優點是清晰可控,缺點是相對復雜,需要同時維護兩個長期分支。這個模式是面向 “版本發布” 的,并不適用于 “持續發布(代碼一有變動,就部署一次)” 的場景。

      參考文檔

      https://mp.weixin.qq.com/s/l5JU9e6_HrS_-ixiBIrqsA

      Git 分布式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【小白學習tensorflow教程】三、TF2新特性@tf.function和AutoGraph
      下一篇:Python 異步 ASGI 服務器及框架
      相關文章
      亚洲热妇无码AV在线播放| 精品国产日韩亚洲一区91| 亚洲AV成人片无码网站| 456亚洲人成在线播放网站| 亚洲人成电影福利在线播放| 亚洲成年人啊啊aa在线观看| 亚洲综合色区中文字幕| 亚洲精品视频在线观看视频| 精品日韩亚洲AV无码| 亚洲无线电影官网| 亚洲色图在线播放| 亚洲AV无码1区2区久久| 久久久久亚洲精品美女| 亚洲国产精品乱码一区二区| 亚洲AV无码成人精品区在线观看 | 亚洲精品蜜夜内射| 亚洲精品伦理熟女国产一区二区| 亚洲欧美一区二区三区日产| 亚洲国产精品无码久久久秋霞1| 亚洲成av人片在线天堂无| va亚洲va日韩不卡在线观看| 一本色道久久88亚洲综合| 亚洲国产一区明星换脸| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲一区二区三区偷拍女厕| 国产亚洲高清不卡在线观看| 亚洲av永久无码精品秋霞电影影院| 国产亚洲综合网曝门系列| 亚洲AV无码日韩AV无码导航| 亚洲黄网在线观看| 亚洲一区二区三区在线| 亚洲色中文字幕在线播放| 亚洲av日韩av永久在线观看| 亚洲精品99久久久久中文字幕| 国产偷国产偷亚洲高清日韩| 亚洲综合网站色欲色欲| 无码乱人伦一区二区亚洲一| 亚洲国产成人资源在线软件| 亚洲欧美aⅴ在线资源| 亚洲VA综合VA国产产VA中| 亚洲色大成网站WWW久久九九 |