Git:如何将两个仓库移入指定仓库且不丢失提交历史?
仓库迁移并保留提交历史的操作步骤
以下是将另外两个仓库移入第一个仓库且完整保留提交历史的具体操作:
第一步:克隆目标主仓库到本地
打开终端,执行命令:git clone <主仓库的远程地址> cd <主仓库文件夹名>第二步:添加第一个待迁移仓库作为远程源并拉取历史
把第一个要迁移的仓库添加为本地主仓库的远程仓库,然后拉取它的所有提交历史:git remote add <仓库别名,比如repo-a> <第一个待迁移仓库的远程地址> git fetch <仓库别名>第三步:将第一个仓库合并到主仓库的指定目录
使用git subtree命令把待迁移仓库的内容合并到主仓库的一个子目录下,同时保留提交历史:# 如需保留待迁移仓库的完整独立提交历史,去掉--squash参数即可 git subtree add --prefix=<子目录名,比如repo-a> <仓库别名> <待迁移仓库的目标分支,比如main> --squash第四步:重复操作第二个待迁移仓库
按照第二步和第三步的流程,处理第二个要迁移的仓库:git remote add <仓库别名,比如repo-b> <第二个待迁移仓库的远程地址> git fetch <仓库别名> git subtree add --prefix=<子目录名,比如repo-b> <仓库别名> <待迁移仓库的目标分支,比如main> --squash第五步:推送合并后的内容到远程主仓库
把本地合并好的代码推送到远程主仓库:git push origin <主仓库分支名,比如main>验证提交历史
执行以下命令可以查看所有提交历史,确认迁移过来的仓库历史是否完整:git log --oneline --graph --all
完成以上操作后,主仓库中会生成对应两个待迁移仓库的子目录,所有提交历史都被完整保留。之后如果需要删除原仓库,也不会影响主仓库中的历史记录。
内容的提问来源于stack exchange,提问作者Dian VK
相关产品推荐
相关产品推荐

