如何从一个 Git 存储库迁移到另一个 Git 存储库?
Posted
技术标签:
【中文标题】如何从一个 Git 存储库迁移到另一个 Git 存储库?【英文标题】:How to migrate from one Git repo to another Git repo? 【发布时间】:2020-10-25 20:26:39 【问题描述】:我需要从一个 Git 存储库迁移到另一个 Git 存储库。目的地不为空。过去有人显然已经做了这项工作,但现在所有的分支都已经过时了。
情况是这样的:
源远程仓库:repo_source
分支机构:
branch_A branch_B branch_C branch_D目标远程仓库:repo_dest
分支:
想法是让缺失的分支(branch_C、branch_D)和已经存在的分支(branch_A、branch_B)需要用新数据进行更新。
作为示例,这里只有 4 个分支,但实际上更多。那么,有没有一种方法(脚本)可以让这种迁移变得简单?
【问题讨论】:
【参考方案1】:使用 git clone 命令克隆存储库 repo_source。
git clone repo_source
完成后,
git remote add repo_dest repo_dest_url
git push --force --all repo_dest
即使存在,这也应该替换所有目标分支。
【讨论】:
我建议先尝试不使用--force
,如果它有效,那很好,如果它在强制之前不考虑问题。【参考方案2】:
您可以将repo_dest
存储库添加为另一个远程,然后在本地拉取并合并更改并推送它们。
从您的本地工作目录尝试以下操作;
git remote add new_origin ORIGIN_URL # add new remote
git pull new_origin branch_A # pull, merge branch_A and fix conflicts (if any)
git pull new_origin branch_B # pull, merge branch_B and fix conflicts (if any)
git push new_origin branch_A # push each branch to the new remote
git push new_origin branch_B
git push new_origin branch_C
git push new_origin branch_D
【讨论】:
是的,我正在做类似的事情,但我收到消息 Branch 'master' set up to track remote branch 'master' from 'repo_dest'。一切都是最新的。并没有真正发生它似乎忽略了 --all param 那么不要使用--all
。分别推送每个分支。
你可以做的另一件事。签出master
到新分支,删除本地master
分支,推送所有分支,恢复master分支。以上是关于如何从一个 Git 存储库迁移到另一个 Git 存储库?的主要内容,如果未能解决你的问题,请参考以下文章
从 git 存储库创建补丁或差异文件并将其应用到另一个不同的 git 存储库
从一个git仓库迁移代码到另一个git仓库(亲测有效版)(转)
sh 将子目录从一个git存储库移动到另一个git存储库的子目录,而不会丢失提交历史记录。
从github迁移git存储库到gitee 2022-02-15
如何将一些文件从一个 git repo 移动到另一个(不是克隆),保留历史记录
如何将 TFVC 项目从 Azure DevOps 服务器迁移到新的 Azure DevOps 帐户作为 Git 存储库