合并功能分支的Git rebase交互式编辑?

时间:2014-04-24 07:12:12

标签: git merge git-rebase

以下情况会发生什么:

  • 有一个拥有无尽生命线的主分支
  • 为功能创建新分支,并在完成时与master合并。该分支是删除后的

在某些时候我需要对已被视为已关闭的功能进行更改(它已合并为主版并已删除)

      X --- --- (feature (branch deleted)
     /         \                
    /           \              
   a --- --- --- M master

我做的是:

git rebase --interactive X

源代码中的更改是否已经修改了提交X.我希望图表保持不变但是有类似的内容:

        X --- -(feature (branch deleted)
       /      \
      /        M
     /        /
    /        /                 
   a --- --- --- X master

提交的编辑是否在合并之间传播?如何与现有的"未来"犯?

1 个答案:

答案 0 :(得分:1)

您的新提交图有另一个X提交,因为默认情况下rebase不会保留合并。如果您想保留合并,则需要使用--preserve-merges标记,或简称为-p

git rebase -i -p <base-commit>

请注意preserving merges interactively does not work correctly when you reorder commits可以一起使用它们:

  

--preserve-merges --interactive提供的待办事项列表没有   表示修订图的拓扑。编辑提交和重写   他们的提交消息应该可以正常工作,但尝试重新提交提交的倾向   产生违反直觉的结果。

另外,您确定X是您想要使用的基本提交吗?如果您想修改X,我认为您应该选择a作为基础:

git rebase -i -p a