关于后端:git亲测体验rebase与merge

rebase与merge异同与最佳应用场景


这个dev-cui分支从devlop分支切出后,始终都只有我一个人在开发&保护.

如果还有一位共事张三, 在devlop分支切出的分支dev-zhangsan上进行开发,他增加了一个glossary.md,而后进行了add & commit

此时我的项目开发实现,须要将两个分支合并到devlop分支上:

develop分支先合并了dev-cui,(即切到develop分支, 执行git merge命令)

git merge

接着去合并dev-zhangsan,如果应用git merge,

绿色示意dev-cui分支,紫色示意dev-zhangsan,每一个点代表一次提交.

可见呈现了分叉,且merge操作会主动有一次commit(此处为快进式提交,参看文首链接),见下图:

gir rebase

先回退到7f8ccb37fdcced4bd4766c8192a6e27fc5f02730,

接着切换到dev-zhangsan分支, 执行git rebase develop,

此刻对于dev-zhangsan分支,曾经有了develop分支的其余提交

而后切回develop分支,执行git merge dev-zhangsan

此时的develop分支的提交log为:


git rebase个别称为变基换基, 这篇blog 将其称为衍合,区别于git merge合并

其实git rebase后,还是要执行一次git merge.

即有个骨干分支A,有个次分支B,二者切分后,都有许多次提交. 这时想再合并到一起,且心愿commit log是一条直线, 那切到次分支B上,执行git rebase A, 这时就基于A,而后把B的改变”拔掉”,而后放到最后面.(B的提交历史此时是一条直线)

而后须要切回骨干分支A,执行git merge B,肯定是一个”快进式提交”. 此时对于A,它的commit log就也是一条干线了


本文由mdnice多平台公布

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理