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

  • 相关阅读:
    URAL 2046 A
    URAL 2056 Scholarship 水题
    Codeforces Gym 100286I iSharp 水题
    Codeforces Gym H. Hell on the Markets 贪心
    Codeforces Gym 100286G Giant Screen 水题
    Codeforces Gym 100286B Blind Walk DFS
    Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
    Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积
    Codeforces Gym 100418K Cards 暴力打表
    Codeforces Gym 100418J Lucky tickets 数位DP
  • 原文地址:https://www.cnblogs.com/cgzl/p/8626116.html
Copyright © 2011-2022 走看看