通常,合併分支時,如果可能,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
文件,在開頭添加一行
Edit on dev Branch.
並提交一個新的commit
:
$ git add readme.txt $ git commit -m "add merge" [dev 1c2c8d5] add merge 1 file changed, 2 insertions(+), 1 deletion(-)
切換回master
:
$ 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)
準備合併dev
分支,請注意--no-ff
參數,表示禁用Fast forward
:
$ git merge --no-ff -m "merge with no-ff" dev Merge made by the 'recursive' strategy. readme.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
因爲本次合併要創建一個新的commit
,所以加上-m
參數,把commit
描述寫進去。
合併後,我們用git log
看看分支歷史:
$ git log --graph --pretty=oneline --abbrev-commit * dc0fa98 merge with no-ff |\ | * 1c2c8d5 add merge |/ * 519b239 conflict fixed |\ | * 019672b AND simple * | cdd45fe & simple |/ * 6637024 branch test * 27470e0 First Commit * edf0b59 Initial commit
可以看到,不使用Fast forward
模式,merge
後就像這樣: