【Git】本地仓库强制覆盖远程仓库

目录

一. 问题

二. 步骤

三. FAQ

3.1 如果遇到分支的不同版本,怎么办呢?

3.2 迁移Github 仓库,到Gitee 新仓库

四. 参考


一. 问题

本地仓库太多了,想搞下迁移,如果把本地仓库与远程仓库关联起来呢 ?

一般我们想要本地仓库与远程关联起来,有两种办法:

  1. 以远程仓库为准(本地仓库废弃),直接拉下来代码即可;
  2. 以本地仓库为准(远程仓库废弃),强制推到远程;

注意: 

以本地仓库为准,强制推送到远程服务器,远程服务器代码库会丢失;

请勿应用于生产环境;

二. 步骤

举例说明:

比如我在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 [email protected]:XXX/XXX-DeMo.git
# 2. 进入镜像的目录
cd XXX-DeMo.git
# 3. 推送到新仓库
git push --mirror [email protected]:XXX/XXX-DeMo.git

四. 参考

  1. 镜像仓库 - GitHub Docs

(完)

你可能感兴趣的:(Git,git)