在 git 上合并一个主题分支,同时删除所有该主题分支的提交记录?

4
我想知道在Git中是否有以下可能性:
假设我有以下历史记录:
A---B---C---D---E  master
         \
          W---X---Y  topic

我想将主题分支中所做的所有更改合并回主分支,但不保留提交历史记录。也就是说,不要像这样:
A---B---C---D---E---F  master
         \         /
          W---X---Y  topic

我想获得以下历史记录:
A---B---C---D---E---F  master

“F” 是主分支中的一个新提交,它相当于将提交“W”,“X”,“Y” 所做的所有更改一次性应用。
我也希望能够保持专题分支的完整性:
A---B---C---D---E---F  master
         \         
          W---X---Y  topic

这是可能的吗?我一直在使用git rebase做一些测试,但目前为止它还没有按照我需要的方式运作。
谢谢提前。
3个回答

7

应该比差劲的齐柏林提出的更简单,但我还没有尝试过:

$ git checkout master
$ git merge --squash topic
$ git commit *what has changed*

然而,当我正确理解git help merge时,它应该能解决问题。

谢谢!这个对我很有帮助。也感谢bad zeppelin和antlersoft。 - Marco Aurélio
今天我读了这篇文章:http://sandofsky.com/blog/git-workflow.html 可能是一个值得一读的附加阅读。 - Boldewyn

1

创建主题分支的副本,交互式地将其变基到主分支(git rebase -i E),将主题分支中的提交压缩为一个,并最终删除您创建的主题分支的副本。完成这些步骤后,您应该能够获得您想要的结果。


0

创建一个新的分支(这是一个临时的)

git rebase master --interactive

(将提交压缩成一个)

然后在主分支上,挑选出临时分支上的一个提交。

最终你会得到你想要的主分支历史记录,并且主题分支将保持不变。

可能有更简单的方法来完成同样的事情...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接