假设我有一个有很多提交的项目,从一开始手动调整基数是不可能的。我们也假设没有分支或标签,只有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