Git簡單心得: 乾淨的master branch

前幾個月使用git在開發時,腦中已經有開一個dev branch的概念了,所以我就開了一個dev branch然後開始作業
等到dev工作告一個段落,要發出V1.0版本的時候,我也知道要使用merge功能,所以我就git checkout master+git merge dev,然後就出問題了

merge前的樹大概是這樣

* dev
|
*
|
*
|
* master

如果使用上面git checkout master+git merge dev的做法,git會先比較兩個branch的共同祖先
由於dev和master的共同祖先就是master,git這時會預設採用 fast forward(快進) 的方式來merge
產生下圖的結果

* dev, master
|
*
|
*
|
* 

跑出這樣的結果,之前建立新的dev branch是做什麼用的...

解決方法很簡單
只要改用git merge dev --no-ff就可以解決問題,產生出下面的樹
(--no-ff就是no fast forward)

* dev, master
| \
*  | 
|   |
*  |
| /
* 

這時候,master就不會走dev走過的路,而是自己再開一條路
這樣master的路徑上就不會滿滿都是commit的痕跡,只有在重要發佈時才會把commit打在master branch上
可以讓開發視圖看起來更容易理解

當然,這個是要依照開發者的需要去做改變的,並非所有的merge都不需要fast forward

git

Comments

comments powered by Disqus