git仓库迁移及Q&A

git仓库迁移方法:

要求:

把A仓库(10.1.1.1/registry.git)迁移到   新库B库(10.1.1.2/registry.git);

方案一:(迁移了历史提交记录)

操作前提:

在库迁移之前要关闭master角色的被保护设置:
登录仓库的git:仓库--settings-Repository,在Protected Branches下,选择最后被保护的角色,点unprotected
操作方法:

操作步骤:

在git bash(windows打开)中,切换到一个空间大的目录(例如cd  e:)

第一步:在本地clone旧库的内容
git clone --bare    http://username:password@ip:port/A.git     注意如果password中含有@,则http://ip:port/A.git  根据提示输入用户名和密码;
第二步:完成后,该目录下就会生成一个A.git,切换到该目录下:
cd A.git/
第三步:把内容推到新库B库中:
git push --mirror  http://username:password@ip:port/B.git      注意如果password中含有@,则http://ip:port/A.git  根据提示输入用户名和密码;

这样在登录B库的git,就可以查看到A库中的所有内容(所有分支、及提交记录都会有)

方案二:(弊端:历史提交记录未迁移)

1、在目录1中,git clone A库,在目录2中,git clone B库,清空B库,commit后,把A库同样分支的内容,拷贝到B库同样分支,在B库,add--》commit,即成功;

2、如果有多个分支,分别对A、B库,checkout到新分支,把A库分支内容拷贝到B库中,在B库,add--》commit,即成功;

弊端:登录B库发现,没有A库的历史提交记录,如果想回退版本,就无法实现

 

方案一遇到问题:

迁库时报错是:pre-receive   hook  declined;

在git push --mirror  http://username:password@ip:port/B.git时,有下面的报错:

原因是:权限问题,操作用户无master分支的代码提交权限。分配权限后,需要重新clone下代码,再push就成功了;


git  bash 怎么能设置复制黏贴呢?
右键顶端边框,点击“属性”,在进行点击项的菜单,勾上编辑项的“快速编辑”;接下演示复制功能,随意复制当前窗口的一条,没有进行设置,是不能进行复制;
 

 关于“仓库每次被push,需要收到邮件”功能设置:
git界面打开---》settings--》Intergrations---》Webhooks (0)下面---》Emails on  push--》勾选Active,在Recipients对话框中,添加需要发邮件的邮箱地址就好;

 

 

git上developer用户无法push的解决方法


研究了下Gitlab,最终解决方案是:在项目的【Setting】中的【Protected branches】可以设置哪些分支是被保护的,默认情况下【master】分支是处于被保护状态下的,develop角色的人是无法提交到master分支的,在下面的【Developers can push】打上钩就可以了。

从本地迁库到仓库上的转发链接参考:https://www.cnblogs.com/sdcs/p/8270029.html  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值