zoukankan      html  css  js  c++  java
  • Git -- Rebase

    git rebase: 这个命令可以把一个分支上commit的变化放到另一个分支上重新上演一遍.

    简单的Rebase例子.

    首先准备好一个git项目.

    做一个feature分支, 然后做几个commits.

    回到master分支, 再做几个commits. 然后 rebase.

    最后使之达到这个效果:

    现在我想让master分支rebase到my-feature分支上:

    回到my-feature分支, rebase一下master上发生的变化:

    在我想要rebase进去的分支上执行命令: git rebase 源分支名.

    git rebase master

    注意发生的变化, log里面没有分叉了.

    再做一个变化,

    然后commit.

    现在在my-feature分支上的动作结束了, 该回到master分支了.

    查看之前在master分支修改的内容, 发现没有了. 回到了最初没修改时的状态.

    然后执行fast-forward merge即可:

    最后删除my-feature分支即可.

    冲突.

    做一些修改, 然后commit.

    再创建一个分支 trouble, 然后切换到该分支.

    做一些修改, 再commit.

    然后再回到master分支, 然后再做一些冲突的修改.

    切换到trouble分支.

    然后用可视化工具进行diff:

    有两处冲突.

    然后尝试rebase:

    不出所料, 有冲突发生, 当前处于rebase暂停阶段.

    这时可以放弃rebase (abort):

    git rebase --abort.

    查看log:

    可以看到没发生变化.

    解决冲突:

    再次尝试rebase:

    由于有冲突, 所以停留在了rebase的冲突阶段.

    然后使用可视化merge工具:

    解决好所有的冲突之后, 保存. 

    查看状态:

    然后执行git rebase --continue.

    查看log:

    然后再做一个修改, 还是修改同一个文件. 然后commit.

    当前领先master两个commits.

    然后整合变化到master.

    又是一个fast forward merge.

    查看log:

    没有分叉了.

    Rebasing 远程分支(Github).

    先执行git pull origin master, 然后 git push origin master.

    然后修改某个文件.

    然后我再github上面修改该文件(需要造成冲突), commit.

    然后查看状态:

    这里显示的是: 我当前的分支领先于origin/master 两个commit.

    这时就需要更新引用(把可以代表历史的东西都带下来), 需要使用 git fetch 这个命令.

    git fetch origin master

    现在所有的引用都已经更新了.

    这时查看状态:

    可以看到远程和本地分支有分歧.

    这次我想做的是, 想让我本地的commits合并后放在远程分支的前边.

    这时可以使用git pull, 但是需要加一个参数, 使得rebase可以发生:

    git pull --rebase origin master.

    git pull --rebase origin master

    由于有冲突, 所以要进行merge,

    merge结束后, 继续rebase:

    然后跳过这次commit:

    git rebase --skip.

    OK

  • 相关阅读:
    第三章 kubernetes核心原理
    Jmeter
    Docker 入门学习
    第二章 Kuberbetes实践指南
    第一章 Kubernetes入门
    java中的引用与ThreadLocal
    Disruptor极速队列
    Redis设计与实现——单机数据库的实现
    Redis设计与实现——数据结构与对象
    python装饰器
  • 原文地址:https://www.cnblogs.com/cgzl/p/8626116.html
Copyright © 2011-2022 走看看