git merge --no-ff -m "msg" x-branch:禁用Fast forward的普通合并
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息(即:原来这个分支的做了什么在log中体现不出来)。
为了保留原来的分支,即:普通合并,这样的话,merge的时候会提交一个commit,就会输入-m参数,在log中体现的也更清晰!
前面我们解决冲突的时候发现,我们解决冲突之后,即使
是在master主分支上合并dev,最后查看日志的时候:
git log --graph --pretty=oneline --abbrev-commit
发现其实合并前后只有一条线,master和mzy指向的是同一个结点。这样完全看不出合并的痕迹。
但使用--no-ff的话,禁用Fast forward,使用普通合并,就能在合并的位置看到一个commit 突出的合并节点!
假如我们当前在master分支上:
git merge --no-ff -m "把dev分支上的内容合并到master上,使用普通合并" dev
$ git log --graph --pretty=oneline --abbrev-commit
* 8fc444b (HEAD -> master) merge with no-ff
|
| * 1601be9 (dev) add merge
|/
* 4aa96bc 修改了readme.txt
* 68f4f31 修改LICENSE
* 6653ea8 Merge branch 'yao' into mzy
这样的话,就很利于团队开发了!
大家都在自己的分支上干活,时不时的往dev上合并,最后定期合并到master上就好了!这样也能看出我们的分支的信息,以及什么时候合并过,更直观!默认的fast forward我们是看不出痕迹的!
团队中开发怎么用呢?
首先有master分支:
在master分支上创建一个master的分支,dev(开发分支):
git checkout master 切换到master上
git checkout -b dev (创建并切换到了dev分支上了)
git branch mzy_a (在dev上为dev创建mzy_a分支)
git branch mzy_b (在dev上为dev创建mzy_b分支)
git branch mzy_c (在dev上为dev创建mzy_c分支)
... ...git merge --no-ff -m "" 分支名称。