繁体   English   中英

将 repo 克隆到新项目中,然后将其推送到 gitlab

[英]cloning a repo into a new project and then push it to gitlab

我需要将现有的回购克隆到一个新的回购中。 存储库托管在 gitlab。现在我已经创建了一个新的 gitlab 存储库,并将现有的存储库克隆到新的存储库中。

  1. mkdir 新目录
  2. cd 新目录
  3. git 克隆 ssh://git@git.xyz.com:8888/Project/repo.git
  4. git remote rm origin(从现有 repo 中删除 origin)
  5. git 远程添加 origin ssh://git@git.xyz.com:8888/Project/Newrepo.git

到这里为止一切正常。 我使用命令git branch -a检查了分支——它显示了所有远程分支。

git push -u origin --all

(这导致仅将 master 推送到新的 git 存储库。我想了解为什么所有分支都没有克隆到新目录中。)

我想将所有代码从现有的 repo 推送到新的,包括分支、标签和所有内容。

我在这里缺少什么?

这在“使用 git clone --mirror 和 git push --mirror 移动 git repo ”中进行了说明

在您的情况下,使用git clone --mirror

git clone --mirror ssh://git@git.xyz.com:8888/Project/repo.git
cd repo.git
git remote set-url origin  ssh://git@git.xyz.com:8888/Project/Newrepo.git
git push --mirror

注意使用git remote set-url (而不是删除/添加)

我认为您应该尝试--mirror选项,即运行命令git push --mirror origin

- 镜子

不是将每个 ref 都命名为 push,而是指定将 refs/ 下的所有 ref(包括但不限于 refs/heads/、refs/remotes/ 和 refs/tags/)镜像到远程仓库。 新创建的本地 refs 将被推送到远程端,本地更新的 refs 将在远程端强制更新,删除的 refs 将从远程端移除。 如果设置了配置选项 remote..mirror,则这是默认设置。

在将现有项目克隆到新的 repo(使用 gitlab)时,我建议执行以下步骤:

  1. 创建一个新目录,您需要将要克隆的项目作为独立项目克隆(git checkout)到该目录中,例如“myproject”。
  2. 使用intelliJ从VCS中checkout,输入要克隆的项目的url,例如git@gitlab.myproject.com:project/myproject.git
  3. 使用intelliJ终端执行以下命令:
  • “git remote -v” >>> 此命令现在应该显示 git origin 已连接到原始项目存储库,例如“origin git@gitlab.myproject.com:project/myproject.git”
  • "git remote set-url origin git@gitlab.myproject.com:independent-project/myproject.git" >>> 通过这个命令我们将 origin 设置为新创建的存储库
  • “git remote -v” >>> 执行这个命令现在应该表明这个项目的存储库被设置为新创建的存储库“origin git@gitlab.myproject.com:independent-project/myproject.git”
  • “git push -u origin --all” >>> 使用此命令,您会将所有现有数据从项目推送到新创建的存储库。
  • "git push -u origin --tags" >>> 如果需要将所有标签推送到新的仓库,也可以执行这条命令。 但是,在克隆项目时,我假设您不需要这一步。
  1. 这样就完成了将现有项目克隆到新存储库的过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM