闲谈git merge 与 git rebase 的区别
发布网友
发布时间:2022-12-02 10:32
我来回答
共1个回答
热心网友
时间:2023-01-27 05:08
相信大部分使用 Git 的朋友都会遇见相同的疑问,并且也从网上搜索了不少资料。那么,为什么我还要写这篇文章呢?因为我想尝试从自己的角度解释这个问题,如果能给到大家灵光一闪的感悟,便善莫大焉啦。估计点进来的朋友也对 merge 和 rebase 有了一定了解,所以我也就不浪费篇幅再去详细介绍 merge 和 rebase,让我们直入主题吧。
现在假设我们有一个主分支 master 及一个开发分支 deve,仓库历史就像这样:
rebase 是什么情况呢?还是一个初始的仓库历史图:
rebase 操作加上 -i 选项可以更直观的看见被提取的 commit 信息。
仍然在 master 分支上 rebase deve 分支,不过这次要加上 -i 选项,即 git rebase -i deve ,然后我们可以得到这样一个文本信息框
上面对 merge 的讲述都是基于其默认操作即 --no-ff ( git merge xxx = git merge --no-ff xxx )的说明,但是 merge 还有一种常用的选项 --ff-only ,那么这两种有什么区别呢?
--no-ff 是 merge 的默认操作,三方合并并提交修改;而 --ff-only 会判断当前分支可否根据目标分支快速合并,就像下面这样