乐趣区

关于后端: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 多平台公布

退出移动版