git:一个本地仓库绑定多个远程的方法以及遇到的问题

绑定方法见知乎大佬:本地Git仓库关联多个远程仓库的两种方法

一般情况下,没人这么搞!
但是公司迁移git仓库阶段,xx云环境上的gitlab要有操作记录,不然影响整体评分,这就不得一个本地仓库关联了原来的仓库+新的xx云环境的仓库

我才用的是上述文章里的第二种方式:

在原来仓库的基础上执行一下方法:xxx.git为xx云远程仓库的git地址

git remote set-url --add origin new.git

这样 输入 git remote -v即可看到:

origin  old.git (fetch)
origin  old.git (push)
origin  new.git (push)

即: 拉取分支为原仓库分支;push分支添加了一个xxx云仓库的分支;
拉取代码只会从原仓库上拉取、儿提交代码会推送到两个远程仓库,这样实现了两个远程仓库的同步

但是依旧出现了问题:

原因:

某一次的开机重启电脑查杀把我的git一些ref对象删了,无法恢复,我重新拉取了xx云上的仓库代码(因为原仓库访问太慢了);然后按上述继续绑定远程origin,不过这次执行的是:

git remote set-url --add origin old.git

导致了 git remote -v

origin  new.git (fetch)
origin  new.git (push)
origin  old.git (push)

我的拉取跟其他同事拉取的仓库不一致,当同时提交时,或者提交忘记拉取时,导致两个仓库的提交记录不一致

此时:我和其他同事pull 后push时会有refs不同等等的弹窗

一番折腾最终也是解决了这个问题:
  1. 切换到原fetch old仓库,删除远程,绑定远程仓库为new仓库,
  2. git pull 绑定远程 git branch set_upstream-to=origin/develop develop (若多个分支出现提交ref错乱需要挨个处理)
  3. 修改冲突(如果有),git push到new.git上(old分支的提交)
  4. 删除远程,绑定远程为old。提交推送(new的提交)
  5. 此时,两个仓库的提交已同步
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值