压缩历史上的提交



假设我有一个有很多提交的项目,从一开始手动调整基数是不可能的。我们也假设没有分支或标签,只有master。我们也假设有一些合并提交,但可能太多了,无法手动合并它们,甚至无法跟踪它们。

我的问题是:我如何将所有提交从第一次提交到提交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.....

这可能吗?

从期望的起点检出一个新的分支。

git checkout D

git checkout -b myNewBranch

使用git merge --squash K

然后你可以用一条新消息提交合并中所有的更改。

之后,在Git 1.7.2及更高版本中,您可以选择一个范围来跨其他提交。

git cherry-pick Q^..Z

最新更新