git rebase和git merge究竟有啥区别

git提供了两个分支合并的命令,一个是git merge,另外一个是git rebase,他们究竟有啥区别呢?

我们假设一个git仓库里有一个master分支,另外还有一个dev分支。

在这里插入图片描述
上述ABCDEFG这几个节点(每个节点是一个commit)都是按照时间顺序来提交的,如下表所示

节点提交时间
A7月1号
B7月2号
C7月3号
D7月4号
E7月5号
F7月6号
G7月7号

也就是:

  • master分支上有:A->B->C->E 这4个节点
    - dev分支上有: A->B->D->F>G 这个5个节点
    每个节点代表一个commit。
#那么如果执行如下两个命令:
git merge master
git rebase master

上述两个命令都是将master分支合并到当前分支,那结果有什么不同呢?

git merge master命令之后,dev分支变成如下图。
在这里插入图片描述git rebase master命令,会变成什么样子呢?
在这里插入图片描述- git merge master命令执行之后,dev分支上的提交都是基于时间轴来合并的, 会在提交历史上增加一个无关的提交历史。

  • git rebase命令是用来改变一串提交基于那个分支为基础,如git rebase master就是把dev分支的D、F和G这三个提交基于最新的master分支上,也就是基于E这个提交之上。git rebase的一个常见用途是保持你正在开发的分支(如dev分支)相对于另外一个分支(如master分支)是最新的。

总结

merge和rebase命令都是用来合并分支,那什么时候用merge命令和rebase命令呢?

  • 当你需要合并别人的修改,可以考虑使用merge命令,如项目管理上需要合并其他开发者的分支。
  • 当你的开发工作或者提交的补丁需要基于某个分支之上,那用rebase命令,如给Linux内核社区提交补丁。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值