在git上合并主题分支,删除所有主题分支的提交历史记录?

时间:2011-07-30 15:22:26

标签: git branch

我想知道git中是否可以使用以下内容:

假设我有以下历史记录:

A---B---C---D---E  master
         \
          W---X---Y  topic

我想将主题分支中所做的所有更改合并回master,但不保留提交历史记录。也就是说,而不是:

A---B---C---D---E---F  master
         \         /
          W---X---Y  topic

我想有以下历史:

A---B---C---D---E---F  master

其中F是主分支中的新提交,等同于提交WXY中所做的更改,一次全部应用。< / p>

我还希望能够保持主题分支的完整性:

A---B---C---D---E---F  master
         \         
          W---X---Y  topic

这可能吗?我一直在使用git rebase进行一些测试,但到目前为止它还没有按照我需要的方式运行。

提前致谢。

3 个答案:

答案 0 :(得分:7)

它应该比齐柏林飞艇建议的更简单,但我没有尝试过这个:

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

然而,当我理解git help merge时,它应该可以解决问题。

答案 1 :(得分:1)

创建主题分支的副本,以交互方式将其重新绑定到主分支(git rebase -i E),将主题分支中的提交压缩为一个,最后删除您创建的主题分支的副本。在这些之后你必须能够得到你想要的东西。

答案 2 :(得分:0)

创建一个关于主题的新分支(这是一次性的)

git rebase master --interactive

(将提交压缩成一个)

然后在主人身上,在一次性分支上提交了一个提交。

您最终会得到您想要掌握的历史记录,主题分支将完整无缺。

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