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 项目文件名红色的原因
因为还没有把必要的文件加入版本控制。文章来源:https://www.toymoban.com/news/detail-496623.html
解决:
提交一次,选择要提交的文件提交成功后,就会变为绿色。
文章来源地址https://www.toymoban.com/news/detail-496623.html
到了这里,关于Git:完美实现远端仓库迁移,包含提交历史的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!