将现有的 git 项目导入到 GitLab?

我有一个关于 Gitlab 安装的帐户,我在其中创建了存储库“ ffki-startseite”

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

我怎样才能导入它?

277002 次浏览

将新的 gitlab 远程添加到现有的存储库中,然后按下:

git remote add gitlab url-to-gitlab-repo
git push gitlab master

Rake gitlab: import: repos 可能是一种更适合大规模进口的方法:

  • 复制 repos_path(/home/git/repositories/group/repo.git)下的裸存储库。目录名称必须以 .git结尾,并位于组名称空间或用户名称空间下。
  • 运行 bundle exec rake gitlab:import:repos

所有者将是第一个管理员,如果组不存在,将创建一个组。

参见: 如何将现有的裸 Git 存储库导入到 Gitlab 中?

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

为了演示我的示例,我将使用 https://github.com/raveren/kint作为源代码库,并将其导入到 gitlab 中。我事先在 gitlab 中创建了一个名为 Kint(在名称空间 raveren下)的空项目,它告诉我新创建的项目的 译注: git URL 有 http://gitlab.example.com/raveren/kint.git

这些命令与操作系统无关。

新的目录中:

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

* 假设您没有从 origin重命名远程主机,否则,更改前两行以反映它。

git clone --mirror git@github.com:username/repo-name.git


git remote add gitlab ssh://git@servername.com/username/repo.git


git push -f --tags gitlab refs/heads/*:refs/heads/*

最好通过 ssh 进行,https 可能无法工作

这是一个基本的移动一个回购到新的位置。我一直在用这个序列。使用 光秃秃的时,不会看到源文件。

打开 Git Bash。
创建存储库的一个简单克隆。

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

镜像推送到新的存储库。

cd old-repository.git


git push --mirror https://gitlab.com/exampleuser/new-repository.git

删除您在步骤1中创建的临时本地存储库。

cd ../
rm -rf old-repository.git

为什么是镜子? 参见 git 的文档: < a href = “ https://git-scm.com/docs/git-push”rel = “ nofollow norefrer”> https://git-scm.com/docs/git-push

--推送所有分支(即参考文献/标题/下的参考文献) ; 不能与其他分支一起使用。

—— Mirror 不是将每个引用命名为 push,而是指定引用/(包括但不限于引用/头/, 将参考文献/远程文献/和参考文献/标记/)镜像到远程存储库。 新创建的本地引用将被推送到本地的远程端 更新的参考文献将被强制更新到远程端,并删除参考文献 将从远程端移除。如果 配置选项远程. . 镜像已设置。

保持 所有的标签和分支

只需在 existing Git repository中运行这个命令

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,包括问题、请求 Wiki、里程碑、标签、发布说明和评论

关于 GitLab 文档有一个详尽的说明:

Https://docs.gitlab.com/ee/user/project/import/github.html

博士

  • 确保您想要映射到 GitLab 用户的任何 GitHub 用户都具有以下两项:

    • 使用 GitHub 图标或-登录的 GitLab 帐户
    • 一个 GitLab 帐户,其电子邮件地址与 GitHub 用户的公共电子邮件地址相匹配
  • 在顶部导航栏中,单击 + 并选择 New project。

  • 选择 Import project 选项卡,然后选择 GitHub。
  • 选择列出 GitHub 存储库的第一个按钮。您将被重定向到 github.com 上的一个页面,以授权 GitLab 应用程序。
  • 单击 Authorize gitlabhq,您将被重定向回 GitLab 的 Import 页面,并且列出了所有的 GitHub 存储库。
  • 继续选择要导入的存储库。

但请阅读 GitLab 文档页面的细节和挂钩!

(不是很多)

Gitlab 在这个特性上有点问题。 如果您的项目很大,那么您可能会损失大量的时间来进行故障排除。

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

跟着我的截图

enter image description here

在 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

我找到了最好最简单的方法 给你,对我来说非常有效,它可以把所有的标签和分支从原来的地方推到新的遥控器上:

git remote add newremote git@git-cloud.z.com:test/kubespray.git


git push newremote --tags refs/remotes/origin/*:refs/heads/*

我使用了“ git push —— all-u newremote”,但它只将已结束的分支推到新的远程。

Git: 将所有分支推到一个新的远程

作者: Keith Dechant,软件架构师

下面是你们中的一些人在使用 Git 时可能遇到的一个场景 您有一个 Git 回购的工作副本,比如从一个旧的 服务器。但是您只有工作副本,而原始副本不是 所以你不能只用叉子。但是你要把整个 回购和所有的分行历史到你的新遥控器。

如果您的工作副本包含跟踪分支,那么这是可能的 从旧的远程(source/Branch 1,source/Branch 1,等等), 你有完整的回购协议和历史记录。

然而,在我的情况下,有几十个分支,部分或全部 我从来没有在当地检查过他们。推动他们似乎都是一个 那么,接下来怎么做?

我确定了两个选择:

选项1: 检查每一个分支和推我可以这样做,我可以 甚至编写一个 Bash 脚本来提供帮助 工作文件,并将创建一个本地分支 每个远程跟踪分支。这将是缓慢的大 回购。

选项2: 不改变你的工作副本推有第二个 另一种选择,它不需要每个分支的结帐,不需要 在工作副本中创建无关的分支,甚至 修改工作副本中的文件。

如果您的旧的、不再活动的远程控制器被称为“ oldremote”,并且您的 新遥控器叫做“新遥控器”,你可以只按遥控器 使用以下命令跟踪分支:

git push newremote refs/remotes/oldremote/*:refs/heads/*

在某些方面 也可以只推送分支的一个子集。如果 分支名称在名称空间中使用一个斜杠(例如, Oldremote/Features/Branch 3、 oldremote/Features/Branch 4等等) ,您可以 只推送名称以 “旧遥控器/功能”:

git push newremote refs/remotes/oldremote/features/*:refs/heads/features/*

无论你 推送所有分支或其中的一些分支,Git 将执行 没有创建任何新的本地分支,并且没有 对工作文件进行更改 匹配您的模式将被推到新的远程。

有关该主题的更多信息,请查看 Stack 上的这个线程 溢出。

发布日期: 2017年10月9日