通过git进行仓库有迁移

223 阅读2分钟

适用场景:已有一个新仓库A,有一个旧仓库B,B中有之前存在的代码,现在需要将A中所有的代码和commit信息都提交并覆盖B中的内容。

1. 克隆旧仓库B(目标仓库)

首先,需要从 GitLab 上克隆目标仓库(即你想覆盖的旧仓库),在你的本地机器上执行以下命令:

git clone <旧仓库的 URL>

cd <旧仓库的目录> 或直接vscode打开

2: 添加新仓库A作为远程仓库

然后需要将新仓库添加为远程仓库,以便能够将新仓库的内容推送到目标仓库。假设你的新仓库 URL 是 <新仓库的 URL>,可以使用以下命令:

git remote add new-origin <新仓库的 URL>

3: 拉取新仓库的内容

接下来,拉取新仓库的内容到你的本地仓库:

git fetch new-origin

3.1 创建一个新的空分支(非必需)

为了忽略 commit 记录,你可以创建一个新的空分支:

git checkout --orphan new-branch

4: 覆盖旧仓库的内容

此时,新仓库的内容已经拉取到本地,但需要将其强制推送到旧仓库,可以通过以下命令实现:

git reset --hard new-origin/main

注意:这里假设新仓库的默认分支是 main,如果是其他分支(例如 master),请相应调整命令中的分支名称。

reset --hard 会将本地仓库的内容重置为新仓库中的内容,同时保留新仓库的 commit 历史。

5: 推送到旧仓库

最后,将重置后的内容推送到目标仓库(即旧仓库),并使用 --force 参数来强制覆盖目标仓库的内容:

git push origin main --force

注意:如果目标仓库的默认分支是 master,将 main 替换为 master。