开启生长之旅!这是我参加「日新计划 12 月更文挑战」的第4天,点击查看活动详情

今日遇到git库房搬迁的问题,记载如下:

问题背景

今日遇到一种状况,要把一个项目从内网gitlab搬迁到外网gitlab,我运用的是指令搬迁.

运用如下指令进行导出项目:

git clone --bare <库房地址>

准备到了外网运用如下指令进行上传:

git push --mirror <库房地址>

导出很顺利,在往外网新库房上传的时分呈现了一些问题:

问题1:

git仓库迁移遇到的问题(git push --mirror)

提示不是一个库房

这个问题比较简略,由于没进入到xxx.git文件下

必须先进入xxx.git下再执行就行了

问题2:

git仓库迁移遇到的问题(git push --mirror)

提示推送失利

这个问题废了不少时刻,之前没遇到过,看提示中有一句无法删去默许分支. 以为是默许分支的问题,所以上gitlab大将新库房的默许分支删去/改名,成果都没作用.

然后一顿百度后,许多都说是权限问题,查看了一下gitlab上我的权限,确认我的权限是Maintainer,应该不会呈现权限问题

然后测验运用-f强制推送,依然无作用

git仓库迁移遇到的问题(git push --mirror)

镇定了五分钟后,从头梳理,置疑又可能是gitlab远端库房建的有问题,所以删去库房,重建库房,公然可以了.

两次建库的差异在于: 第二次没选择主动生成README.md,

git仓库迁移遇到的问题(git push --mirror)

选择了这个选项,会主动给库房初始化,并建立一个默许分支.

这样的状况就不能运用git push –mirror推送了

总结

推送指令总结

之前没有运用过–bare和–mirror这两个参数指令,今日总结一下

git clone 加上 –bare是拉取一个裸版本库,裸版本库和正常git clone拉取的正常库的差异是:

  1. 裸库只具有版本操控的左右,本身不能进行作业区的操作,即正常的 add/commit等指令都是不能执行的.
  2. 裸库可以作为一个本地库房,供给正常库运用,即正常库可以设置remote url为裸库,之后push就是向裸库提交(相当于github/gitlab这样的中心库房的作用)
  3. 裸库一般只用于分享库房,毕竟没人会在自己本地搞一个库让别人连,gitlab/github/云效不香吗?

–mirror

这个了解的不太深刻,从百度/google及官网的阐明来看,就是将本地的一切分支都推送到远端(强制),我的简略了解就是将本地的一切分支直接掩盖远端.

与git push相比,不加mirror就只是推送某一个分支.

附:

git官网阐明地址: git-scm.com/docs/git-pu…

stackoverflow问题解说: stackoverflow.com/questions/3…

git仓库迁移遇到的问题(git push --mirror)

个人考虑总结:

git是现在开发必备的东西,可是许多时分只会用 add/commit/push等简略指令,没有深化了解其中各种参数的作用,有时分费了许多时刻,其实只需要一条简略的指令就能解决.

git必需要加深了解,对开发影响太大了.