目录
一. 问题
本地仓库太多了,想搞下迁移,如果把本地仓库与远程仓库关联起来呢 ?
一般我们想要本地仓库与远程关联起来,有两种办法:
- 以远程仓库为准(本地仓库废弃),直接拉下来代码即可;
- 以本地仓库为准(远程仓库废弃),强制推到远程;
注意:
以本地仓库为准,强制推送到远程服务器,远程服务器代码库会丢失;
请勿应用于生产环境;
二. 步骤
举例说明:
比如我在Github 上,新建了一个远程仓库(新建过程省略);
我想以本地仓库为准,强制推送到远程仓库上去,且覆盖远程仓库;
命令如下:
// 查看本地仓库配置
git config --local --list
// 如果有本地与远程关联,保留(多仓库关联)/不保留,看实际需要
// 此处我选择不保留,即单仓库关联
git remote remove origin
// 添加本地仓库与远程仓库关联
git remote add origin XXX.git
// 强制推送到远程仓库,且覆盖远程代码库
git push -f --set-upstream origin master:master
本地分支关联到远程分支,命令如下:
# 本地master 分支关联远程origin/master 分支
# 方式一
git branch --set-upstream-to=origin/master master
# 方式二(弃用)
git branch --set-upstream master origin/master
# 方式三
git branch -u origin/master master
推送成功后,如下所示:
$ git push -f --set-upstream origin master:master
Enumerating objects: 33, done.
Counting objects: 100% (33/33), done.
Delta compression using up to 8 threads.
Compressing objects: 100% (22/22), done.
Writing objects: 100% (33/33), 97.49 KiB | 198.00 KiB/s, done.
Total 33 (delta 8), reused 33 (delta 8)
remote: Resolving deltas: 100% (8/8), done.
To XXX/XXX.git
+ 68b2a72...e1d17df master -> master (forced update)
Branch 'master' set up to track remote branch 'master' from 'origin'.
三. FAQ
3.1 如果遇到分支的不同版本,怎么办呢?
合并如下:
# 把远程 main 分支合并到已有的 master 本地仓库版本
git merge main --allow-unrelated-histories
如果有冲突,解决冲突,
# 添加冲突文件
git add .
# 然后继续合并
git merge --continue
# 如果放弃合并
git merge --abort
此时,推送到远程分支,
git push origin master:master
即可处理完成;
3.2 迁移Github 仓库,到Gitee 新仓库
最近 Github 国内访问好慢,没办法,太影响效率了,翻墙你懂得;
步骤如下:
# 1. 克隆纯镜像
git clone --bare git@github.com:XXX/XXX-DeMo.git
# 2. 进入镜像的目录
cd XXX-DeMo.git
# 3. 推送到新仓库
git push --mirror git@gitee.com:XXX/XXX-DeMo.git
四. 参考
(完)