GitHub代码迁移GitLab指定子组时跳转至个人空间问题咨询
问题原因
- 核心原因1:你直接将子组的访问地址作为仓库推送地址,子组是GitLab的层级分类容器,本身不能作为代码仓库接收推送,必须先在temp子组下创建对应的空项目,拿到项目的实际仓库地址再推送。
- 核心原因2:GitLab的路径解析规则,当你推送的路径不存在对应仓库、且路径不是有效仓库地址时,会自动触发重定向,将路径的命名空间替换为你当前登录账号的个人空间,匹配同名仓库,若未找到会在你个人空间下自动创建同名私有仓库,因此代码推到了个人空间下的temp仓库。
- 辅助原因:部分情况下本地存储的Git全局凭证默认优先匹配个人空间路径,会加剧这个重定向问题。
解决方法
前置操作
- 登录GitLab,进入
project_name/temp子组页面,点击「新建项目」创建一个空项目,项目名可和原GitHub仓库名保持一致,创建完成后复制项目的HTTPS仓库地址,格式应为https://gitlab.com/project_name/temp/[你的项目名].git(注意末尾的.git后缀必须保留)。 - 确认你登录的账号对该项目有 Maintainer 及以上权限,你是子组 Maintainer 默认满足要求。
本地仓库操作
- 首先查看当前远程地址配置,确认错误地址:
git remote -v
- 重新设置正确的远程origin地址,替换为你刚才复制的项目地址:
git remote set-url origin https://gitlab.com/project_name/temp/[你的项目名].git
- (可选,若推送时仍弹出权限/重定向提示)清除本地Git凭证缓存:
- Windows:打开「控制面板-用户账户-凭据管理器-Windows凭据」,删除所有GitLab相关的凭据
- Mac:打开「钥匙串访问」,搜索gitlab.com,删除对应凭证
- Linux:执行
git config --global --unset credential.helper临时禁用凭证存储
- 执行推送操作,完整迁移所有分支和标签:
# 推送所有本地分支 git push origin --all # 推送所有标签 git push origin --tags
如果需要覆盖目标空项目的默认初始化内容,可以加上-f参数强制推送。
验证操作
推送完成后进入project_name/temp子组下的目标项目页面,确认提交记录、分支、标签都正常同步即可,个人空间下误推的temp仓库可直接删除。
内容的提问来源于stack exchange,提问作者user16024709
相关产品推荐
相关产品推荐

