壁球合并上游分支后提交

时间:2019-08-13 06:11:26

标签: git

在我的功能分支中,历史记录看起来像

从主节点分支->添加提交->在主节点上合并最新提交->添加更多提交

在“添加提交”部分中,添加了一些大文件,然后在“添加更多提交”中将其删除。我想从功能分支的第一组和第二组提交中压缩一些提交以释放此空间。不幸的是,似乎大师的合并将使这变得困难。

这似乎与其他类似问题不同,因为2个分支仍然是分开的,但我只是合并了master的最新提交。功能分支仅由我使用,因此我可以重写其历史记录。

1 个答案:

答案 0 :(得分:0)

我将画出您的情况以使其更易于讨论:

      master
      v
A--B--C
 \     \
  D--E--M--F--G
              ^
              feature

现在,为了论证,我们假设您要压缩提交G(发生在合并后 )到提交E(发生在 之前)。

正如@iBugcomment中指出的那样,最简单的方法(因为您拥有分支)是简单地进行压扁然后重做合并,因为默认情况下,交互式rebase将被丢弃在选定范围内的所有合并提交。

但是,如果您确实想将M保留在原处,则可以尝试使用--rebase-merges选项进行迭代式重新设置:

git checkout feature
git rebase -i --rebase-merges D

来自documentation

  

使用--rebase-merges,通过重新创建合并提交,rebase将尝试在将要重新提交的提交中保留分支结构。

但是,请记住:

  

任何已解决的合并冲突或这些合并提交中的手动修订都必须手动解决/重新应用。

因此,在这种情况下,--rebase-merges唯一能买到您的东西是,在您压缩提交之后,合并提交在feature分支的历史记录中保持不变。