我有一个存储库,其中包含不再在master
上使用的旧版网站的代码。该站点在一个新的存储库中完全重新设计,该存储库中的代码和历史记录被复制到旧站点的repo中的一个分支中,我们称之为new_site
。我无法将new_site
合并到master
,因为历史完全不同。
我已经研究过两个子模块和子树合并了一下,但是当你试图保留另一个项目的子目录中包含的一个项目的代码时,两者似乎只是相关的,而不是当你想要粘贴两个工作树时在彼此之上。
此时,我希望旧代码保持原样,只需将new_site
附加到当前HEAD之上。知道如何实现这一目标,或者在不吹嘘旧代码的情况下清理这些混乱的替代建议吗?
答案 0 :(得分:7)
一般的想法是:
在“Concatenate the history of two Git repositories?”
中实施git clone <git repository B url>
cd <git repository B directory>
git remote add repo-A-branch <git repository A directory>
git fetch repo-A-branch master
git remote rm repo-A-branch
从A导入正确的分支后,您可以使用 graft point ,然后git filter-branch
将嫁接的历史记录转换为“真实”历史记录,以摆脱移植点。
答案 1 :(得分:1)
我刚才写了这个脚本,它处理了一个常见的情况(将存储库的历史记录附加到子目录中的另一个存储库):
https://github.com/multi-io/utils/blob/master/git-append-repo