我正在使用filter-branch将一个较大的git-repository转换为多个repos(每个子模块一个),但是sub-repos中的一些提交会断开连接并且不会共享父级。
父存储库来自svn导入(使用git svn clone
),并且具有master-trunk的干净历史记录,并且偶尔会从中释放分支。 IE浏览器。像这样的东西:
---------------- master
\ \ \
\ \ \------- release-2.00
\ \
\ \-------- release-1.10
\
\--------- release-1.00
然后我使用类似的东西运行git filter-branch:
git filter-branch --prune-empty --subdirectory-filter module1 -- --all
git push ../split-module1/ --all
其中../split-module1/
是一个空的裸存储库。 1
然后,生成的仓库将包含一个看起来像这样的历史记录:
---------------- master
\
\------------ release-1.00
---------------- release-1.10
---------------- release-2.00
对我而言似乎是随机的,哪些版本仍附在行李箱上。
有没有办法让分支团结起来?如果需要更多信息,我很乐意提供: - )
1 这有点简化,因为在所有版本中都不存在某些模块,--all
然后被相关版本替换,但我得到相同的结果。
更新:事实证明我错误地认为全球历史正在变得干净,有些版本悬而未决:-(我设法使用git pull --rebase .
合并历史,然后一切都像魅力一样。