[转]git merge 与 git rebase的区别

git log --graph可以查看分支合并图

1》他们都是用于从一个分支获取并且合并到当前分支

2》一个场景:在feature分支进行新特性的开发,与此同时,master分支也有新的提交,为了将master上的新提交合并到你的feature分支上

3》merge合并

执行的命令是:

git checkout feature

git merge master

此时在feature上git会自动产生一个新的commit

merge特点:自动创建一个新的commit

优点:记录真实的commit情况,包括每个分支的详情

缺点:因为每次merge会自动产生一个merge commit,所以commit比较频繁时,分支会很杂乱

合并遇到冲突:仅需要修改后重新commit

4》rebase合并(本质是变基)

执行命令:

git checkout feature

git rebase master(feature分支上)

它会把你整个feature分子移动到master分支后面,有效的把所有master分支新的提交并入过来

rebase特点:会合并之前的commit历史

优点:得到跟简洁的项目历史,去掉了merge commit

缺点:如果合并出现代码问题不容易定位

合并是出现冲突:修改冲突部分

git add

git rebase --continue(如果执行无效,可以git rebase --skip)

rebase黄金法则:绝不要在公共分支上使用它

比如:将master分支rebase到你feature分支上

git rebase fearure(master分支上)

将master分支的所有提交移到feature分支后面,问题是它只发生在你的代码仓库中,其他所有开发者还在原来的master分支上,git会认为你的master分支和其他人的master以及分叉

git rebase会获得一个干净的没有merge commit的线性历史树

git merge可以避免commit history的风险

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值