我想知道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
是主分支中的新提交,等同于提交W
,X
,Y
中所做的更改,一次全部应用。< / p>
我还希望能够保持主题分支的完整性:
A---B---C---D---E---F master
\
W---X---Y topic
这可能吗?我一直在使用git rebase进行一些测试,但到目前为止它还没有按照我需要的方式运行。
提前致谢。
答案 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
(将提交压缩成一个)
然后在主人身上,在一次性分支上提交了一个提交。
您最终会得到您想要掌握的历史记录,主题分支将完整无缺。
可能有更简单的方法来做同样的事情......