一般,合併分支時,若是可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。git
若是要強制禁用Fast forward模式,Git就會在merge時生產一個新的commit,這樣,從分支歷史上就能夠看出分支信息。spa
下面咱們實戰一下--no-ff方式的git merge:3d
首先,仍然建立並切換dev分支:blog
$ git checkout -b dev
Switched to a new branch 'dev'開發
修改readme.txt文件,並提交一個新的commit:it
$ git add readme.txtio
$ git commit -m "add merge"
[dev 45e3302] add merge
1 file changed, 1 insertion(+), 1 deletion(-)ast
如今,咱們切換回master:test
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 4 commits.
(use "git push" to publish your local commits)file
準備合併dev分支,請注意--no-ff參數,表示禁用Fast forward:
$ git merge --no-ff -m "merge with no-ff" dev
Merge made by the 'recursive' strategy.
readme.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
由於本次合併要建立一個新的commit,因此加上-m參數,把commit描述寫進去。
合併後,咱們用git log看看分支歷史:
$ git log --graph --pretty=oneline --abbrev-commit
* 819865d (HEAD -> master) merge with no-ff
|\
| * 45e3302 (dev) add merge
|/
* 20864c0 confict fixed
|\
| * ab1c693 AND simple
* | ea364c9 & simple
|/
* 3d9a6be branch test
* d255aa7 (origin/master) LICENSE
* 4e28fb6 readme.txt
能夠看到,不使用Fast forward模式,merge後就像這樣:
分支策略
在實際開發中,咱們應該按照幾個基本原則進行分支管理
首先,master分支應該是很是穩定的,也就是僅用發佈新版本,平時不能在上面幹活;
那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支上發佈1.0版本。
你和你的小夥伴每一個人都在dev分支上幹活,每一個人都有本身的分支。時不時地往dev分支上合併就能夠了。
因此,團隊合做的分支看起來就像這樣:
摘抄自:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013758410364457b9e3d821f4244beb0fd69c61a185ae0000