我想使用 got bundle 镜像大型存储库的一部分。我的计划是创建一个新分支,并从中删除不相关的文件。但是这个分支的 bundle 包含了分支前的历史,包括所有被删除的文件。
有没有一种方法可以在没有这些“剩菜”的情况下创建捆绑包?
Ps 将模块拆分为子模块是不切实际的,因为已删除的文件分布在各个目录中。此外,这些文件应保留在存储库的主分支中。
我想使用 got bundle 镜像大型存储库的一部分。我的计划是创建一个新分支,并从中删除不相关的文件。但是这个分支的 bundle 包含了分支前的历史,包括所有被删除的文件。
有没有一种方法可以在没有这些“剩菜”的情况下创建捆绑包?
Ps 将模块拆分为子模块是不切实际的,因为已删除的文件分布在各个目录中。此外,这些文件应保留在存储库的主分支中。
您需要一个--orphan
分支,然后将所需的历史记录“重新设置”到它上面(首先伪造您想要重新设置的分支,以便您有一个开始/结束点,注意重新设置默认情况下不包括合并)
然后你应该能够捆绑新的孤立分支。
或者尝试git-archive
- 从命名树创建文件存档。
重写历史的唯一方法(我知道)是进行交互式变基并删除所有您不想要的行。该过程基本上通过您选择的修改来回放开发历史。如果你回溯到很长一段路,那就有点麻烦了,而且你在这个过程早期做出的选择可能会迫使你在以后解决很多冲突。
最终结果是一个新分支(您确实保留了原始分支的备份,对吗?),它似乎具有完全相同的内容,但通过完全不同的路线到达那里。这意味着每个提交将具有不同的 SHA,并且两个分支将不兼容以进行合并。
基本上,我不会这样做,除非问题更改是最近才发生的,并且存储库的所有用户都同意将开发迁移到新分支。
如果我只想查看最近的历史记录并回发补丁文件,而不需要移动太多数据,那么我会使用浅层克隆。