如何将某些提交移动到git中的另一个分支?

情况:

  • 主人在X;
  • quickfix1在X + 2提交
  • 然后我开始研究quickfix2,但意外地把quickfix1作为源分支来复制,而不是主人。 现在quickfix2在X + 2提交+2个相关提交。

    现在我想用quickfix2创建一个分支,但没有属于quickfix1的两个提交。

    我试图在quickfix2中创建一个修订版本,但该修补程序不保留提交历史记录。 有没有办法保存我的提交历史,但有一个分支没有在quickfix1中的变化?


    这是rebase --onto的经典案例 - 之:

     # let's go to current master (X, where quickfix2 should begin)
     git checkout master
    
     # replay every commit *after* quickfix1 up to quickfix2 HEAD.
     git rebase --onto master quickfix1 quickfix2 
    

    所以你应该离开

    o-o-X (master HEAD)
          
          q1a--q1b (quickfix1 HEAD)
                  
                   q2a--q2b (quickfix2 HEAD)
    

    至:

          q2a'--q2b' (new quickfix2 HEAD)
         /
    o-o-X (master HEAD)
          
          q1a--q1b (quickfix1 HEAD)
    

    这最好在干净的工作树上完成。
    请参阅git config --global rebase.autostash true ,特别是在Git 2.10之后。


    你可以使用git cherry-pick来选择你想复制的提交。

    可能最好的方法是创建分支出主,然后在该分支使用quickfix2的2提交git cherry-pick ,你想要的。


    你可以做的最简单的事情是樱桃采摘范围。 它和rebase --onto但更容易理解:)

    git cherry-pick quickfix1..quickfix2
    
    链接地址: http://www.djcxy.com/p/4295.html

    上一篇: How to move certain commits to another branch in git?

    下一篇: branch from previous commit and split commit history