參考:https://zlargon.gitbooks.io/git-tutorial/content/branch/commit_tree.html
必要的引用:
在 Git 的世界裡,我們可以把每個 patch 都看成是一個小節(jié)點(diǎn)
這些 patch 一個一個的串連起來肆资,最後組成了 Commit Tree
不論我們在哪一個節(jié)點(diǎn)上面矗愧,都可以藉由 parent 一路往回走,最終都會回到 root
root 也就是我們的 first commit
因此每一條從 patch 回到 root 的路徑郑原,其實(shí)都是一個的分支
每個 commit id 都是獨(dú)一無二的唉韭,絕對不會重複,因?yàn)槊恳粭l路徑都是唯一的
每個 commit id 都可以視為是一個版本分支
本地分支犯犁,遠(yuǎn)程分支與跟蹤分支
patch用來記錄文件的差異属愤,被提交的patch叫做commit,想象有一顆commit tree酸役,本地和遠(yuǎn)程共同維護(hù)這棵樹住诸; 樹上的分支被本地和遠(yuǎn)程分別維護(hù)驾胆;
LJBJ@PLPSC:~/x11r69/gittest/xvfbzos [0]$git branch -avv
* dev e34d748 [origin/dev] set the .gitattributes for *.sh
master 6be496a [origin/master] init the xvfb project
remotes/origin/HEAD -> origin/master
remotes/origin/dev e34d748 set the .gitattributes for *.sh
remotes/origin/master 6be496a init the xvfb project
- dev 是本地用戶維護(hù)的一條分支, 這條分支在沒有push到遠(yuǎn)程前僅僅存在在本地?cái)?shù)據(jù)庫贱呐,但是會出現(xiàn)在commit tree中
- origin/dev 是遠(yuǎn)程服務(wù)器維護(hù)的一條分支丧诺, 它與本地的dev 很可能不是同一條分支。
- remotes/origin/dev 代表遠(yuǎn)程庫 origin中的dev分支的最近一次fecth時的狀態(tài)奄薇。 每次fetch會自動移動origin/dev在commit tree中的位置驳阎;