如何将一个git历史追加到另一个?

时间:2014-02-07 08:01:49

标签: git git-submodules git-subtree

我有一个存储库,其中包含不再在master上使用的旧版网站的代码。该站点在一个新的存储库中完全重新设计,该存储库中的代码和历史记录被复制到旧站点的repo中的一个分支中,我们称之为new_site。我无法将new_site合并到master,因为历史完全不同。

我已经研究过两个子模块和子树合并了一下,但是当你试图保留另一个项目的子目录中包含的一个项目的代码时,两者似乎只是相关的,而不是当你想要粘贴两个工作树时在彼此之上。

此时,我希望旧代码保持原样,只需将new_site附加到当前HEAD之上。知道如何实现这一目标,或者在不吹嘘旧代码的情况下清理这些混乱的替代建议吗?

2 个答案:

答案 0 :(得分:7)

一般的想法是:

从A导入正确的分支后,您可以使用 graft point ,然后git filter-branch将嫁接的历史记录转换为“真实”历史记录,以摆脱移植点。

答案 1 :(得分:1)

我刚才写了这个脚本,它处理了一个常见的情况(将存储库的历史记录附加到子目录中的另一个存储库):

https://github.com/multi-io/utils/blob/master/git-append-repo