0

我在一个文件夹中有一个存储库,不久前我将其拆分为子模块。

初始:(T0)

-mainpackage
\-subpackage1
\-subpackage2

当前:(T1)

-subpackage1
-subpackage2
-mainpackage

目前我可以从一开始就看到所有 git 历史记录。现在我想把这个 subpackage1 移到另一个 repo 中。

当我执行手术并过滤分支时,git filter-branch --subdirectory-filter <directory of subpackage1> -- --all我会丢失 T0 和 T1 之间的历史记录,这是提交次数最多的。

当我用 跟踪历史时git log --follow --pretty=format:"%H" <filename>,我看到同一个文件有两个版本,最新版本带有文件路径(如'subpackage/src/../filename')和只有文件名的旧提交(如'filename')。

如何恢复整个子模块(最佳情况)或特定文件(最坏情况 - 我只对 4-5 个文件的历史记录)的历史记录

4

1 回答 1

1

您可以使用git_filter_repo作为参数传递文件存在的所有路径来解决您的问题。

例如

git-filter-repo --path mainpackage/subpackage1 --path subpackage1

于 2021-01-24T10:23:07.450 回答