我正在将几个相关项目合并到一个单体库中,保留每个项目的历史记录。
这些项目中的每一个都有自己的存储库。此外,每个项目的开发都严重依赖于--no-ff
合并,以便将主题分支重新集成到主分支中。
我已经尝试使用shopsys/monorepo-tools并成功创建了一个具有联合历史记录的单体库。
我还发现大多数时候主题分支相当长,并包含最初实现、审查修复和有时的master->topic
合并的历史记录。显然,这些信息有点不相关 - 只有进入master
的更改才真正重要。
因此,在将它们全部合并到一个仓库之前,我一直在考虑重写这些项目的历史记录。我希望从这种状态下实现历史记录的重写:
...
|
* Merge branch 'feature/XYZ'
|\
| * feature/XYZ#3 Review fixes part 2
| * feature/XYZ#2 Review fixes
| * feature/XYZ#1 Hack, hack, hack
|/
* Initial commit
到这个状态:
...
|
* squashed: feature/XYZ#1 + feature/XYZ#2 + feature/XYZ#3
|
* Initial commit
我希望能够针对历史中的每次合并重复此操作。我认为我需要使用git filter-branch
,但是我还不能完全理解它的多个选项,所以如果有人能指导我正确的方向,我将不胜感激。