Git rebase 简明用法


为什么网上说的git rebase 用法都这么复杂

git rebase 简明用法:把另一个分支的最新commit改变为当前分支的基础。

实现过程:在改动中会把不一致的本分支commit保存,把另一个分支的commit加载过来,然后把之前保存的commit打上新的时间戳放在后面。简称“变基”。

借用网上的图:

变基之前的分支

变基之前的分支

 

此时如用git merge命令:
git checkout mywork
git merge origin

会生成如下的树:

Merge 后的分支

Merge 后的分支

如果用rebase:

git checkout mywork
git rebase origin

把orgin的最新commit C4 作为当前分支mywork的基础,则生成的树图示如下:

rebase后

rebase后

这时C5和C6变成了新的C5′和C6′。

很明显rebase之后,分支树看起来更加清晰,把平行线变成了一条线,并省掉了一个merge自动产生的commit。缺点是rebase之后,当前分支之前的提交时间都变成rebase时的时间,提交历史发生了改变!简称穿越。如果在一个已经提交到远程仓库(只读)的分支上做rebase,导致本地commit和远程仓库不一致,就会产生很头痛的问题,因为一旦修改远程commit,已经下载了这些commit的同学就会凌乱。

所以,总结两点:

1. 在仅在需要rebase的时候rebase。

2. 仅在本地rebase时不会修改已经推送到远程仓库的commit的分支上做rebase。

这句话写出后我自己也晕了,其实都是自己先判断下,在本地分支和要rebase的分支的交点之后,本地分支没有任何远程分支的commit。

解决冲突:


git add .
git rebase --continue

参考


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值