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


    1. 背景

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

    2. 迁移步骤

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

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

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

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

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

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

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

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

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

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

    3. 后续

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

    关于第四步————>:

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

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

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

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

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

    ①查看自己remote的名字

    git branch -r
    
    • 1

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

    
    git remote set-url origin http://xxx/new-repository.git
    
    
    • 1
    • 2
    • 3

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

    4. 遇到的问题记录总结

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

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

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

    git pull origin master
    
    • 1

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

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

    git pull origin master --allow-unrelated-histories
    
    • 1

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    微服务(Microservice)那点事儿
    JavaScript 验证 API
    Dapper迁移SqlSugar问题汇总
    NPU运行过程中,读带宽高还是写带宽高?
    春雷在线考试系统
    SpringCloud学习笔记(四)
    人工智能在农业领域的五个应用案例
    黄菊华老师,Python毕业设计毕设辅导教程(4):Python 基础概念
    【深度学习】实验5答案:滴滴出行-交通场景目标检测
    Redis-01基本数据结构
  • 原文地址:https://blog.csdn.net/qq_36256590/article/details/126392812