Git分支(本地)

FrankYou發表於2015-07-22
1、Git儲存的不是檔案的差異或者變化量,而只是一系列檔案快照(File Snapshot);
 
2、暫存操作會對每一個檔案計算校驗和(SHA-1雜湊字串),然後把當前版本的檔案快照儲存到Git倉庫中(Git使用blob型別的物件來儲存這些快照),並將校驗和加入到暫存區;
 
3、Git中分支,其實本質上是個指向Commit物件的可變指標。Git會使用master最為預設的分支名稱。在若干次提交後,你其實已經有了一個指向最後一次提交物件的master分支,它在每次提交時都會自動向前移動;
 
4、Git是如何知道當前在哪個分支上工作的呢?答案很簡單:它儲存著一個名叫HEAD的特別指標(HEAD指標是一個指向你正在工作中的本地分支的指標);
 
5、執行git branch命令僅僅是建立了一個新的分支,但不會自動切換到這個分支中去;
 
6、git checkout master命令做了2件事:
6.1、把HEAD指標指向master分支;
6.2、把工作目錄中的檔案替換成master分支所指向的快照內容。
 
7、Git中的分支實際上僅是一個包含所指物件校驗和(40個字元長度SHA-1字串)的檔案,所以建立和銷燬一個分支就變得十分廉價;
 
8、對於HotFix採取如下的流程來處理:
8.1、返回原先已經發布到生產伺服器上的分支;
8.2、為這次緊急修補建立一個新分支,並在其中修復問題;
8.3、通過測試後,回到生產伺服器所在的分支,將修補分支合併進來,然後再推送到生產伺服器上;
8.4、切換到之前實現新需求的分支,繼續工作。
 
9、對於2個分支沒有直接的祖先物件,按如下方式進行合併:
9.1、Git沒有簡單地將指標向右移動;
9.2、將三方(比如:C4、C5、C2)合併後的結果重新做一個新的快照,並自動建立一個指向它的提交物件(比如為:C6),這樣提交物件(C6)比較特殊,它有兩個祖先(C4和C5);
 
10、檢視各個分支最後一個提交物件的資訊,執行:git branch -v
 
11、檢視已於當前分支合併的分支,執行:git branch --merged
 
12、檢視未與當前分支合併的分支,執行:git branch --no-merged
 
13、特性(Topic)分支:一個短期的用來實現單一特性或與其相關工作的分支,在Git中,一天之內建立、使用、合併再刪除多個分支是常見的事;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

相關文章