zoukankan      html  css  js  c++  java
  • [译]git rebase -i

    使用rebase -i会在终端出现一个交互页面. 在这个交互页面中我们可以对要rebase的commit做一定的修改. 

    用法

    git rebase -i <master>
    

    把当前的分支的commit放在<base>后面, -i会打开一个编辑器, 在这你可以为每一个commit输入一个命令, 这个命令决定了如何把单个的commit传输到new base. 还可以改变commit列表的顺序.

    讨论

    大多数开发者喜欢在merge一个分支到master的时候使用rebase -i打磨我们这个feature分支. 他给了我们机会合并一些commit, 删除一些commit, 对commit进行排序.

    例子

    # Start a new feature
    git checkout -b new-feature master
    # Edit files
    git commit -a -m "Start developing a feature"
    # Edit more files
    git commit -a -m "Fix something from the previous commit"
    
    # Add a commit directly to master
    git checkout master
    # Edit files
    git commit -a -m "Fix security hole"
    
    # Begin an interactive rebasing session
    git checkout new-feature
    git rebase -i master
    

    最后的命令会打开一个编辑器, 其中有两行命令.

    pick 32618c4 Start developing a feature
    pick 62eed47 Fix something from the previous commit
    

    在这你可以修改pick命令. 在这个例子中, 我们使用squash合并这两个commit:

    pick 32618c4 Start developing a feature
    squash 62eed47 Fix something from the previous commit
    

    保存关闭编辑器后rebase开始. 这是会打开一个新的编辑器让我们填写commit描述.整个过程可视化如下:

    注意了squash commit有一个新的ID号, 这表明他是一个全新的commit.

    最后使用fase -forward merge集成feature分支:

    git checkout master
    git merge new-feature
    

      

  • 相关阅读:
    阿里面试后的问题总结
    Spring IOC源码实现流程
    Spring Aop源码分析
    SpringCloud的分布式配置及消息总线
    阿里java编码规范考试总结
    压缩文件的压缩时候中文乱码码
    mybatis的时间比较 xml 及不解析<=的写法
    批量插入一张表的数据,并且生成不同的uuid 字符截取 批量更新 去除重复数据
    Redis集群的搭建
    Python 之 基础知识(二)
  • 原文地址:https://www.cnblogs.com/irocker/p/git-rebase-i.html
Copyright © 2011-2022 走看看