是否将现有git项目导入GitLab?

是否将现有git项目导入GitLab?,git,gitlab,Git,Gitlab,我有一个Gitlab安装的帐户,在那里我创建了存储库“ffki StartSite” 现在我想克隆存储库git://freifunk.in-kiel.de/ffki-startseite.git将所有提交和分支放入该存储库中,这样我就可以在自己的范围内开始处理它了 如何导入它?将新的gitlab remote添加到现有存储库并推送: git remote add gitlab url-to-gitlab-repo git push gitlab master 可能是更适合大规模导入的方法:

我有一个Gitlab安装的帐户,在那里我创建了存储库“ffki StartSite”

现在我想克隆存储库
git://freifunk.in-kiel.de/ffki-startseite.git
将所有提交和分支放入该存储库中,这样我就可以在自己的范围内开始处理它了


如何导入它?

将新的gitlab remote添加到现有存储库并推送:

git remote add gitlab url-to-gitlab-repo
git push gitlab master
可能是更适合大规模导入的方法:

  • 复制
    repos\u路径下的裸存储库(
    /home/git/repositories/group/repo.git
    )。目录名必须以
    .git
    结尾,并且位于组或用户命名空间下
  • 运行bundle exec rake gitlab:import:repos
所有者将成为第一个管理员,如果组不存在,将创建一个组


另请参见:

我能够通过在我的计算机上本地运行的以下命令,将我的项目以及所有提交、分支和标记完全导出到gitlab:

为了说明我的示例,我将使用它作为要导入gitlab的源存储库。我事先在gitlab中创建了一个名为
Kint
(在namespace
ravelen
下)的空项目,它告诉我新创建项目的http git url是

这些命令与操作系统无关

在新目录中:

git clone --mirror https://github.com/raveren/kint
cd kint.git
git remote add gitlab http://gitlab.example.com/raveren/kint.git
git push gitlab --mirror
现在,如果您有一个本地克隆的存储库,希望与新的远程设备一起使用,只需在那里运行以下命令*:

git remote remove origin
git remote add origin http://gitlab.example.com/raveren/kint.git
git fetch --all
*这假设您没有从
源代码
重命名远程主机,否则,更改前两行以反映它


最好通过ssh实现,https可能无法工作

这是将一个repo移动到新位置的基本步骤。我一直用这个序列。使用--bare时,将看不到任何源文件

打开Git Bash。
创建存储库的裸克隆

git clone --bare https://github.com/exampleuser/old-repository.git
cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git
镜像推送到新存储库

git clone --bare https://github.com/exampleuser/old-repository.git
cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git
删除在步骤1中创建的临时本地存储库

cd ../
rm -rf old-repository.git
为什么是镜子? 参见git的文档:

--全部推动所有分支(即REF/heads/下的REF);不能与其他文件一起使用

--mirror指定refs/(包括但不限于refs/heads/)下的所有ref,而不是命名要推送的每个ref, refs/remotes/和refs/tags/)将镜像到远程存储库。 新创建的本地引用将在本地推送到远程端 更新的参照将在远程端强制更新,并删除参照 将从远程端删除。如果 配置选项远程..已设置镜像


要保留所有标记和分支

只需在现有Git存储库中运行此命令即可

cd existing_repo
git remote rename origin previous-hosts
git remote add gitlab git@git.hutber.com:hutber/kindred.com.git
git push -u gitlab --all
git push -u gitlab --tags

以下是Gitlab提供的步骤:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.example.com/rmishra/demoapp.git
git push -u origin --all
git push -u origin --tags
将项目从GitHub移动到GitLab,包括问题、请求、里程碑、标签、发行说明和评论 关于GitLab文档有详细的说明:

tl;博士
  • 确保要映射到GitLab用户的任何GitHub用户都具有:

    • 使用GitHub图标登录的GitLab帐户-或-
    • 电子邮件地址与GitHub用户的公共电子邮件地址匹配的GitLab帐户
  • 从顶部导航栏中,单击+并选择“新建项目”

  • 选择导入项目选项卡,然后选择GitHub
  • 选择第一个按钮以列出GitHub存储库。您将被重定向到github.com上的页面,以授权GitLab应用程序
  • 单击授权gitlabhq。您将重定向回GitLab的导入页面,并列出所有GitHub存储库
  • 继续选择要导入的存储库
但请阅读详细信息和挂钩


(不多)

Gitlab在这个特性上有点缺陷。 如果你的项目太大,你可能会浪费很多时间进行故障排除

最好的解决方案是使用创建/导入工具,不要忘记输入用户名和密码,否则它根本不会导入任何内容

跟随我的截图


在gitlab中创建一个空项目,然后在本地终端上执行以下操作之一:

推送现有文件夹

cd existing_folder
git init
git remote add origin git@gitlab.com:GITLABUSERNAME/YOURGITPROJECTNAME.git
git add .
git commit -m "Initial commit"
git push -u origin master
推送现有Git存储库

cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:GITLABUSERNAME/YOURGITPROJECTNAME.git
git push -u origin --all
git push -u origin --tags

我不得不用力推它,因为我已经在gitLab里摆弄了:
git-push-gitLab-master-f
。现在,我在新的GitLab中拥有了所有提交的整个回购协议;)谢谢你不需要照镜子吗?如果您有除master之外的其他分支,该怎么办?是的,按照OP的建议执行,您将丢失所有分支(master除外)和标记Gitlab项目导入将在您创建项目时从URL加载远程repo。包括有关导入svn repos.git remote将gitlab url添加到gitlab repo git push gitlab master的说明--镜像对于可能感到困惑的人,裸存储库是通常位于集中位置(例如github)的存储库,它不包含存储库根目录下的.git文件夹。只有当您可以访问存储裸存储库的服务器时,这才是一个方便的选项。否则,@ravelen的答案是最好的选择。gitlab的一个新功能,创建项目,然后转到项目页面。在这里,您将看到基本指令。在较新版本的Gitlab中,基本指令的可能副本已经消失,任何复制它们的人都可以将它们复制到这里吗?“https可能无法工作”这通常不是什么事情,因为HTTP连接可能被禁用。谢谢你的回答。这将只推送master而不是其他分支不复制所有分支下面这不会复制所有分支它给了我一个错误:remote:GitLab:不允许强制将代码推送到此项目上受保护的分支。到[远程拒绝]主机->主机(拒绝预接收挂钩)I ha