Git:完美实现远端仓库迁移,包含提交历史

1. 背景

最近一直在写一个小项目,服务端及Web端领导交给我来写,其中提供两个对外接口给领导,领导的设备客户端对接用。我的系统代码都是在git上自己的账户下新建存储库 管理的。开发的差不多了,领导一问,好家伙,让我搞到另一个私有的公司组织下的代码仓库里。于是,就有了之后的尝试,以及在此所做的记录。

2. 迁移步骤

  • 步骤一. 首先从自己原先的仓库clone一份裸版本库下来
    git bash 命令如下:
git clone --bare http://xxx/old-repository.git
  • 步骤二. 在新的Git目录下新建一个仓库或者获取目标仓库的URL链接。(假设为new-repository.git)

  • 步骤三. 以镜像推送的方式上传代码到新仓库中去

git bash 命令如下(①先进入clone的旧版本库git文件下;②推送):

cd old-repository.git
git push --mirror http://xxx/new-repository.git

此时已经推送到远端新仓库代码了。
关门放图:
在这里插入图片描述

  • 步骤四:删除本地clone的旧仓库代码,clone新仓库的代码:
cd ..
rm -rf old-repository.git

clone新的仓库代码,可以直接点击clone下载zip项目,也可以复制链接直接输入bash命令:

git clone http://xxx/new-repository.git

此时本地已经有新仓库项目代码了。

(注:如果新地址与旧地址仓库名称等一致,这里可以不执行第四步,看下面)

3. 后续

现在虽然迁移成功了,但是我们还得能像以前一样在本地写写代码,写完了一点commit和push就成功提交才行,对吧?

关于第四步————>:

情况一:打开我们第四步clone下来的项目代码

  • 先创建本地仓库
  • 然后terminal控制台输入命令:
git remote add origin "http://xxx/new-repository.git"

这一步是因为本地刚新建仓库还没有设置过远端地址,所以add。
这里我就报过错,原因看图:
在这里插入图片描述

情况二:新旧仓库项目除了地址不一样,其余都一样,并没有执行第四步:

此时打开自己原先的项目,重新设置远端url,执行如下bash命令:

①查看自己remote的名字

git branch -r

② 假设你的remote是origin,用git remote set_url 更换地址


git remote set-url origin http://xxx/new-repository.git

PS: 更简单的方法,直接打开项目目录下.git文件夹,打开conf配置文件,更改掉里面的IP地址即可。
在这里插入图片描述

4. 遇到的问题记录总结

从迁移到完全恢复往常修改提交,遇到许多以前就遇到的问题,一次性记录在这里,供有缘人查阅。

4.1 初次提交报错:“Updates were rejected because the remote contains work that you do”

如图:
在这里插入图片描述
原因就是因为没有和远端代码合并一波,那么要先PULL拉取一下,执行命令(把本地仓库的变化连接到远程仓库主分支):

git pull origin master

4.2 拉取下来又报错误:refusing to merge unrelated histories

如图:
在这里插入图片描述
那么使用新的命令:

git pull origin master --allow-unrelated-histories

允许合并无关联的历史记录。

然后,自动merge失败,如下图:

在这里插入图片描述
告诉我们需要合并一下冲突。

然后,放图:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4.3 push报错:Updates were rejected because the tip of your current branch is behind

如图:
在这里插入图片描述
解决也很简单,就是你必须先本地commit更新了本地存储库才可以再推送到远端,所以,直接commit and push即可。

4.4 idea 项目文件名红色的原因

在这里插入图片描述
因为还没有把必要的文件加入版本控制。

解决:
提交一次,选择要提交的文件提交成功后,就会变为绿色。
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值