美文网首页
git rebase

git rebase

作者: JJNile | 来源:发表于2019-05-14 23:11 被阅读0次

    介绍

    merge 是一种简单方便的合并方法,但是它却不是唯一的方法,rebase 也可以进行合并。

    merge 合并分支后图形会出现一堆交叉线,合并出现冲突,不管多少次冲突都只要解一次

    rebase 合并分支后图形只会形成一条线,查看时清晰明了,合并出现冲突比较麻烦,如果出现多次冲突需要一次一次去手动解决

    简单来说就是,merge是合并其他分支的内容,rebase也是合并其他分支的内容,但rebase会把本分支的commits放在分支最顶部

    相关参数

    git rebase --abort 放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃

    git rebase --skip 会将引起冲突的commits丢弃掉,一般谨慎使用

    git rebase --continue 合并冲突时用,结合"git add 文件"命令一起用与修复冲突。

    git rebase

    使用

    在项目中master作为主分支,dev作为开发分支。

    分支合并
    此时dev分支上在正在a文件添加新功能,忽然master上a文件出现一个bug,需要紧急修复。

    一般情况下我们都会先基于 master 下创新一个新的分支 hotfix,然后在hotfix中修复bug,后再合并到master。

    合并完后,会出现一个问题,就是master和dev的a文件都进行的操作会发生冲突,这个时候要求master的分支图必须是一条线,所以要在dev使用git rebase 进行合并。

    首先在dev分支中将master分支rebase过来,使用命令

    # git checkout dev
    # git rebase master
    

    如果没有冲突的话,合并会很顺利,但是由于我们之前修复bug改了a文件,所以会出现冲突,git会停止rebase让你去解决冲突,所以我们需要手动解决完冲突。

    在rebase的时候会提示冲突,当然也可以用diff查看冲突

    # git diff
    

    这一步解决冲突就是将修复bug的代码手动添加到当前a文件中。

    解决完冲突后再执行add,提交修改

    # git add a
    

    提交完后,不执行commit,执行

    # git rebase --continue
    

    这样git会继续apply余下的补丁。

    合并多次提交
    https://www.jianshu.com/p/913dad94f289

    总结

    rebase的目的是为了让分支图看起来是一条连续的commit line,避免不必要的commit形成分叉,方便后续code review。

    在不是完全掌握rebase的情况下,多人开发的公共分支要把个人分支合并进来时,推荐merge,避免造成不必要的麻烦,

    另外我们在pull的时候也可以使用rebase,使拉取远程代码到本地时的保证不会分叉,只形成一条commit line

    # git pull –rebase
    

    参考

    http://www.jianshu.com/p/cca69cb695a6

    相关文章

      网友评论

          本文标题:git rebase

          本文链接:https://www.haomeiwen.com/subject/bvrdbxtx.html