Git的合并
merge:
A---B---C topic / D---E---F---G master
A---B---C topic / \ D---E---F---G---H master
(在当前的branch上新建一个H commit)
在同一文件相同行,两个分支均有不同的改动时,会出现冲突,可以使用 git mergetool解决冲突。
<1> fast-foward:
branch pointer直接指向 named commmit而不会新建一个commit存储合并信息。
<2> merge –no-ff
禁用fast-forward,合并时新建一个commit
对待冲突:
<3> stash
记录本地修改(working directory and the index),并将工作区回到HEAD所指向的commit
<4> rebase
把当前commits放到master的commits的最后面。rebase实际上记录了当前分支相对于公共节点的改变,并将这些改变一一应用于master的最后一次commit(the tip of the master),类似于将”分枝”转移至主干的顶端。
不要对在你的仓库外有副本的分支执行变基。(只能再push前进行rebase,push后便不能回滚再进行rebase了,否则由于分布式操作,会引起混乱)
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA (figure 44~47)