合并两个不同的远程仓库


1

我和我的同事在GitHub和GitLab上都建立了一个新的存储库。一切都很好,但是由于误解,他将其推送到GitHub,而我将其推送到GitLab。我们在GitLab上设置了rep镜像,但是只有一种方式,这导致我们的存储库出现差异。现在,我想将它们合并,并仅迁移到GitLab,但是当我这样做时:

git remote add gitlab https://username@gitlab.com/username/rep.git
git push --mirror gitlab

我收到以下错误:

remote: GitLab: You are not allowed to force push code to a protected branch on this project
! [remote rejected] branch only on GitLab (pre-receive hook decline)
! [remote rejected] master -> master (pre-receive hook declined)
! [remote rejected] origin/HEAD -> origin/HEAD (deny updating a hidden ref)
! [remote rejected] origin/master -> origin/master (deny updating a hidden ref)
error: failed to push some refs to URL OF THE REP ON GITLAB

虽然我可以尝试将代码复制并粘贴到GitLab上的存储库中,但我想以一种简洁的方式(如果甚至存在这种方式)进行操作。

Answers:


0

仔细看看gitlab的错误消息:“不允许将强制代码推送到该项目上的受保护分支 ”。默认情况下,gitlab将master分支指定为“受保护的”,项目的管理员也可以选择指定其他受保护的分支。因此,您需要找到一种避免强制按下的方法master

这不是我以前亲自遇到过的情况,但是我要尝试的第一件事是(备份我的本地repo后,以防万一!),以从本地master创建一个新分支,从gitlab提取并合并其分支。掌握到您的master中,推回gitlab(这不再需要master成为强制推送),然后将您创建的新分支(您的旧master)合并到gitlab master中。

或者,如果您的本地仓库在gitlab中完全处于您希望成为“当前”状态,则还可以选择删除(或重命名)gitlab中的项目,然后根据您的本地副本创建一个新项目来替换它。这样可以避免不得不(重新?)合并项目的两个版本,并且(与复制/粘贴内容不同)可以保留所有历史记录,因为您的本地仓库知道。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.