git:在合并之前移动提交

时间:2017-01-02 19:33:32

标签: git merge

我的历史记录树目前看起来像这样: enter image description here

我想将提交sealed trait Stream[+E] { def cons(hd: => E) = ??? def toList: List[E] = ??? } 应用于分支主服务器。当然,我可以再次将分支b3合并到feature中,但历史记录看起来会有两个合并提交(mastera6现在无用): enter image description here

因此,我想知道的是,如何让a4现在指向a4而不是b3 enter image description here 我承认b2会有所不同,因此提交将重命名为SHA1a4'

1 个答案:

答案 0 :(得分:2)

在主分支中,您可以简单地使用--preserve-merges option(或简称为b3)保留合并,同时重新绑定到新的-p

git rebase -p feature

这样,当Git rebase时,它不会尝试压缩合并,而是在新的基础提交之上重新创建它。所以你的历史将是这样的:

                               master
                                 ↓
a1 -- a2 -- a3 --------- a4' -- a5'
        \                /
         \              /
          b1 -- b2 -- b3
                      ↑
                   feature

与未使用--preserve-merges标志时的以下内容相比:

                                      master
                                        ↓
a1 -- a2                 a3' -- a4' -- a5'
        \                /
         \              /
          b1 -- b2 -- b3
                      ↑
                   feature