版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuanjw2014/article/details/82751065
merge
命令选项
1.分支合并
如下:两条从公共节点分叉的分支,分别有了新的提交,当使用git merge合并分支时,会在当前master分支commit基础上应用topic在公共节点以后的提交,并生成一条新的提交记录合并信息。
A---B---C topic
/
D---E---F---G master
=====>
A---B---C topic
/ \
D---E---F---G---H master
合并之前master分支
合并之前topic分支
合并之后master分支
合并之后topic分支 git merge topic 对topic分支没有影响
合并分支之后,查看master分支提交,最近提交只是记录了合并信息,没有记录对文件目录的修改
使用git cat-file 命令查看可以发现master和topic分支下的A,B,C提交的commit对象是一致,没有变化的,但是master分支的最近提交包含有两个parent;可见merge的行为实际上是把topic上的提交应用到master上,使用一条新的提交记录,记录merge后的文件目录状态,并把这条提交的parent指向两条分支合并前的head
2.fast-forward
如下:当在公共节点拉新分支后,master分支没有新的提交,使用git merge命令后,master分支上应用提交A,B,C的话,结果与topic分支是一致的,这种情况,master分支会直接把head指向C提交。
A---B---C topic
/
D master
2.冲突 conflict
当两条分支对同一部分文件进行了不同的修改,git是不能区分应该选取哪份提交,这时就产生了合并冲突,git用<<<<< part1 ======= part2 >>>>>标记冲突部分
part2是被合并分支topic修改部分,part1是master修改部分
在两个分支上分别修改A.md文件,后执行merge
查看A.md文件
修改冲突文件后,执行git add . ;git commit命令完成合并