通常,合併分支時,如果可能,git會用fast forward
模式,但這種模式下,刪除分支後,會丟掉分支資訊。
如果要強制禁用fast forward
模式,git就會在merge時生成乙個新的commit,這樣,從分支歷史上就可以看出分支資訊。
下面我們實戰一下--no-ff
方式的git merge
:
首先,仍然建立並切換dev
分支:
$ git checkout -b dev
switched to a new branch 'dev'
修改readme.txt檔案,並提交乙個新的commit:
$ git add readme.txt
$ git commit -m "add merge"
[dev 6224937] add merge
1 file changed, 1 insertion(+)
現在,我們切換回master
:
$ git checkout master
switched to branch 'master'
準備合併dev
分支,請注意--no-ff
引數,表示禁用fast forward
:
$ git merge --no-ff -m "merge with no-ff" dev
merge made by the 'recursive' strategy.
readme.txt | 1 +
1 file changed, 1 insertion(+)
因為本次合併要建立乙個新的commit,所以加上-m
引數,把commit描述寫進去。
合併後,我們用git log
看看分支歷史:
$ git log --graph --pretty=oneline --abbrev-commit
* 7825a50 merge with no-ff
|\| * 6224937 add merge
|/* 59bc1cb conflict fixed
...
可以看到,不使用fast forward
模式,merge後就像這樣:
在實際開發中,我們應該按照幾個基本原則進行分支管理:
首先,master
分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
那在哪幹活呢?幹活都在dev
分支上,也就是說,dev
分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev
分支合併到master
上,在master
分支發布1.0版本;
你和你的小夥伴們每個人都在dev
分支上幹活,每個人都有自己的分支,時不時地往dev
分支上合併就可以了。
所以,團隊合作的分支看起來就像這樣:
git分支十分強大,在團隊開發中應該充分應用。
Git分支管理策略
如果你嚴肅對待程式設計,就必定會使用 版本管理系統 version control system 眼下最流行的 版本管理系統 非git莫屬。相比同類軟體,git有很多優點。其中很顯著的一點,就是版本的分支 branch 和合併 merge 十分方便。有些傳統的版本管理軟體,分支操作實際上會生成乙份現...
Git分支管理策略
git分支管理策略 作者 阮一峰 如果你嚴肅對待程式設計,就必定會使用 版本管理系統 version control system 眼下最流行的 版本管理系統 非git莫屬。相比同類軟體,git有很多優點。其中很顯著的一點,就是版本的分支 branch 和合併 merge 十分方便。有些傳統的版本管...
Git分支管理策略
如果你嚴肅對待程式設計,就必定會使用 版本管理系統 version control system 眼下最流行的 版本管理系統 非git莫屬。相比同類軟體,git有很多優點。其中很顯著的一點,就是版本的分支 branch 和合併 merge 十分方便。有些傳統的版本管理軟體,分支操作實際上會生成乙份現...