git rebase和merge学习记录

用git合代码遇到冲突,现在把解决过程中学习的记录下来.

现在有两个分支:一个是用来发版的master,另一个分支work,是从master切出来的用作自己写代码什么的.假设分支提交情况如下:

 

图2


现在自己工作完了,要把work的代码合到master上面,一般就是用merge或者rebase.

先说下merge, 它不改变两个分支原来的提交记录,而是把要合并的分支的commit和自己本身的commit合并到一个补丁里面,然后加到两个提交记录后面产生一个新的记.比如你这样:

git checkout master; # 切换到master分支

git merge merge work; # 合并本地work分支

那么提交log就变成了

图3

merge可以留着C和D(互不相连的),可以把master分支切换到C或D.另一个记录的代码就不会影响在master上.

再说说rebase, 它是把当前分支的提交记录拿出来产生临时的补丁,再追加到要合并的分支上,提交记录就变成一条线:

git checkout work;# 切换到work分支, 要是出现代码冲突就在本分支解决

git rebase master;# 合并本地的master分支

图4

详细一点就是,在work分支上合并master的代码:

第一步把work的提交记录D拿出来(变成了补丁);

第二步把master分支拿过来(A <-- B <-- C);

第三步把work的D记录追加到master后面(A <-- B <-- C <-- D).

到这里work分支的与master分支就合完了. 

注意现在还是在work分支哦. master分支的还是A <-- B <-- C;要让master分支变成A <-- B <-- C <--D. 还要进行一次rebase

git checkout master; # 切换到master分支, 以work为基准

git rebase work; # 把刚才做过rebase的本地work分支(A <-- B <-- C <--D)做合并

因为master与此时的work合并时,master没有新提交的记录了,第一步第三步都没有产生影响, 所以master就变成了work分支的A <-- B <-- C <--D

图5

rebase可以把合并提交记录变成一个直线,适合代码实际发版使用.

就这些吧, 写的比较浅显.



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值