zoukankan      html  css  js  c++  java
  • 【翻译】git 从一个分支复制一系列commit到另一个分支

    原文地址:Git: How to copy a range of commits from one branch to another?  作者:tobi

    有时候将一系列commit合并到另一个分支上是非常有用的。这篇文章介绍了如何使用git rebase来实现上边提到的需求。下面2个例子说明了不同的使用场景,这应该有助于你理解这个命令的参数。

    例子1:图中的P,Q,R是feature分支中的commit id,这3个commit需要合并到master分支上,应该会追加到M上。

    第一个命令git rebase --onto M O R复制P,Q,R到master分支上。在gitk上是看不到包含它们的可视化记录。这是因为没有任何分支指向这3次提交。通过第二个命令git rebase HEAD master更新master分支:将HEAD向后指向R(译者注:这块HEAD处于游离态)。

    例子2:跟第一个例子类似。主要专注于一下两点:1)你能选择任何commit节点作为合并一系列commit的根(第一个例子是M),在这里我选择节点L作为合并的根。2)跟例1一样,在完成合并操作后,你可以创建一个分支,HEAD为你合并的一列分支的最后commit节点(图中为R),从而可以让这些合并的commits可见。

    当你理解了这三个参数,你会发现这个命令在不同的场景下都是类似的。因此,记住以下:

    git rebase --onto argument1 argument2 argument3

    • argument1 对于合并操作的目标分支commit节点,它是argument2的前一次commit
    • argument2 合并分支开始的前一次提交,argument2不会合并到argument1上去
    • argument3 合并分支结束提交节点,

    :在数学上可以类似表示(argument2, argument3],前开后闭,本身不包括argument2

    参考资料

  • 相关阅读:
    Swift
    Swift
    Swift
    Swift
    Cocos2d Lua 越来越小样本 内存游戏
    Android组件系列----ContentProvider内容提供商【5】
    看你的门-攻击服务器(4)-HTTP参数注入攻击
    图片缩放中心
    正确lua简单的扩展,可以加速相关C++数据。
    epoll()无论涉及wait队列分析
  • 原文地址:https://www.cnblogs.com/hanshuai/p/14042433.html
Copyright © 2011-2022 走看看