source tree圖譜和多分支開發


最左邊的線不一定是當前分支,每條線的顏色和后面標簽顏色一致,從標簽名字和當前分支名比對看哪條線是當前分支。

最左邊線好像是最近一次提交所在的分支即哪個分支最后一次提交時間最近,就在最左邊。


 
sourceTree圖解116.png

小白點圓圈表示當前分支的最后一次提交。同時后面的提交注釋是粗體顯示。


 
sourceTree圖解168.png

dev分支落后master一個提交


遠端從master創建2個新分支test和release。

 
sourceTree圖解234.png

從第一行看出 master, origin/test, origin/release, origin/master, origin/HEAD都在同一個提交點。


切換到release分支看也是一樣。

 
sourceTree圖解336.png

在dev新建一個文件b.txt,未提交。

 
sourceTree圖解360.png

1附近的白圈表示當前工作所在點,2附近的白圈表示當前dev分支在遠端的提交點。


在dev分支提交並push到遠端。

 
sourceTree圖解430.png

dev分支和本地一致,但是比master, test, release等分支少了一個“commit a.txt to master”提交,同時比master,test,release多了一個”commit b.txt to dev”提交。


切換回master分支

 
sourceTree圖解564.png

Master, test, release分支最后一次提交在白圈位置,后面的“commit a.txt to master”也是粗體顯示。同時落后dev分支一個提交。


Master新建一個資源,不提交。

 
sourceTree圖解669.png

Master落后dev一個提交,且master本地有新的更改。


把dev合並到master,

會有2個提交“commit b.txt to dev”和“merge branch dev”,因此有2個需要push。

 
sourceTree圖解779.png

Master推送完成后

 
sourceTree圖解793.png

切換到release分支


 
sourceTree圖解808.png

黃色的線和黃色的標簽對應,表示當前release分支,release最后一次提交點在“commit a.txt to master”,因為release就是從這個提交點從master拉出來的。

紫色的線和紫色標簽origin/dev, dev對應,可以知道紫色是dev分支。藍色就是master分支,dev分支合並到了master上,但是還沒合並到release上。


合並master到release。

 
sourceTree圖解1012.png

可以看到產生2個推送”commit b.txt to dev”和”merge branch dev”。


在dev分支上提交一個新文件“commit c.txt to dev”。然后切回master。

 
sourceTree圖解1114.png

最左邊即藍顏色的是dev分支,紫色的是master分支,master落后dev一個提交。


切到release分支,

 
sourceTree圖解1174.png

release落后dev一個分支,release和master在同一提交點。


在遠程release分支上拉一個fix分支,

 
sourceTree圖解1252.png

圖中紅圈就是fix分支所在提交點。


同時dev上也提交代碼。

 
sourceTree圖解1285.png

Dev合並到master。


 
sourceTree圖解1302.png

Fix上修改代碼不提交。

 
sourceTree圖解1317.png

可以看到fix分支上是沒有c.txt和d.txt的。


fix提交代碼。

 
sourceTree圖解1355.png

Fix比master落后3個提交,但是比master有一個新提交。


切回到master

 
sourceTree圖解1401.png

藍色是fix,紫色是master,黃色是dev。master和dev代碼是一樣的,比fix多3個提交,但是比fix少一個新提交。


合並fix到master

 
sourceTree圖解1481.png

藍色是master,紫色是fix,黃色是dev。Master上新產生2個提交“commit e.txt fo fix”和“merge branch fix”。


master推送2個新提交。

 
sourceTree圖解1578.png

藍色是master,此時master上的代碼是最全的了,因為紫色和黃色分支的代碼都合並到master上了。


切回到fix分支

 
sourceTree圖解1643.png

藍色是master,紫色是fix,此時fix上代碼比master少3個提交,紅圈畫出來的。

fix上代碼缺少c.txt,d.txt。查看代碼得到驗證。


合並master到dev

 
sourceTree圖解1735.png

黃色是dev,紅圈的5個提交不在dev上,因此有5個push。


只顯示當前分支可以少些線和提交。

 
sourceTree圖解1789.png

線上的每個圓點都表示一個提交,同一行上只有1個點(提交)。


版本管理實踐(和上面講解的東西無關):

FeatureXXX具體功能開發分支,從develop分支拉,功能開發自測完后合並到develop分支。來不及上線的feature分支不要合並到develop。

develop開發分支,上面代碼都是已經開發完的代碼(包括已上線和正在測試的)。

Release分支:測試分支,從develop上fork進行測試,測試發現問題就在release分支上修改,測試通過release代碼合並到master分支發布和develop分支(如果有修改)。

master分支:發布分支,任何時候master上代碼都是能上線的,可以打tag。

fix分支:當上線后發現bug,在master上開一個fix分支進行修正,修正完后合並到master進行發布,同時fix也要合並到develop,(看情況決定是否合並到當前正在測試的release分支)。


ref:https://www.jianshu.com/p/0e64ad60899e


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM