壁球后,功能分支落后于开发

时间:2017-05-04 10:54:38

标签: git

假设我有两个分支:devfeature。我已经在feature上工作了一段时间,并将dev多次合并到它。完成工作后,我将最新的dev合并到feature,并使用git rebase -i my_first_commit_in_feature_branch启动了交互式rebase。我完成了rebase,然后我将我的分支的新版本推送到远程仓库,它说我的分支远远落后于dev。我做错了什么,我怎么能优雅地压制我分支中的所有提交?

1 个答案:

答案 0 :(得分:0)

在改变之前,你似乎有如下历史:

             dev   
              ↓
A - - B - - - C      
  \    \       \
    D - E - F - G    
                ↑
             feature

在重新定位到D之后,您最终在feature分支上重写了一段历史记录,与A之后所做的更改无关并合并:

       dev   
        ↓
A - B - C
  \  
    D - H
        ↑
     feature

您需要的是将DH(或合并后的压缩提交)置于dev所做更改的顶部:

$ git rebase dev

这应该导致树如下:

       dev   
        ↓
A - B - C
         \
           D - H
               ↑
            feature

现在feature分支超前于dev而不是落后。

或者,您可以结帐并返回G并在dev上执行全新的互动式rebase,在那里您可以压缩提交内容:

$ git checkout -b temp G
$ git rebase -i dev
pick D
squash F

这样你最终会得到:

       dev   
        ↓
A - B - C
         \
           I
           ↑
          temp