Squashing承诺在历史上

时间:2014-07-23 14:47:32

标签: git

让我们说我有一个拥有如此多提交的项目,手动从开始调整是不可能的。 我们也说没有分支或标签,只有主人。 我们还说有一些合并提交,但可能太多,无法手动合并或甚至跟踪它们。

我的问题是:如何从第一次提交中压缩所有提交以将XYZ提交到单个提交中?

我想要转换的图形表示:

             /--R--T--Y---\
A--B--C--D--/--G--H--J--K--\---Q--X--Z---....

应该是这样的:

--<I don't care how you will do it git, just put everything from everywhere in a single commit here>----Q---X---Z.....

这可能吗?

1 个答案:

答案 0 :(得分:1)

从所需的起点检出新分支。

git checkout D

git checkout -b myNewBranch

使用git merge --squash K

然后,您可以使用新消息提交合并中的所有更改。

在此之后,在Git 1.7.2及以上,你可以挑选一个范围来引导其他提交。

git cherry-pick Q^..Z