我有一个关于 Gitlab 安装的帐户,我在其中创建了存储库“ ffki-startseite”
现在我想用所有提交和分支将存储库 git://freifunk.in-kiel.de/ffki-startseite.git克隆到该存储库中,这样我就可以在自己的作用域中开始处理它了。
git://freifunk.in-kiel.de/ffki-startseite.git
我怎样才能导入它?
将新的 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 这些命令与操作系统无关。
为了演示我的示例,我将使用 https://github.com/raveren/kint作为源代码库,并将其导入到 gitlab 中。我事先在 gitlab 中创建了一个名为 Kint(在名称空间 raveren下)的空项目,它告诉我新创建的项目的 译注: git URL 有 http://gitlab.example.com/raveren/kint.git
Kint
raveren
这些命令与操作系统无关。
在 新的目录中:
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重命名远程主机,否则,更改前两行以反映它。
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,而是指定引用/(包括但不限于引用/头/, 将参考文献/远程文献/和参考文献/标记/)镜像到远程存储库。 新创建的本地引用将被推送到本地的远程端 更新的参考文献将被强制更新到远程端,并删除参考文献 将从远程端移除。如果 配置选项远程. . 镜像已设置。
--推送所有分支(即参考文献/标题/下的参考文献) ; 不能与其他分支一起使用。
—— Mirror 不是将每个引用命名为 push,而是指定引用/(包括但不限于引用/头/, 将参考文献/远程文献/和参考文献/标记/)镜像到远程存储库。 新创建的本地引用将被推送到本地的远程端 更新的参考文献将被强制更新到远程端,并删除参考文献 将从远程端移除。如果 配置选项远程. . 镜像已设置。
保持 所有的标签和分支
只需在 existing Git repository中运行这个命令
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
关于 GitLab 文档有一个详尽的说明:
Https://docs.gitlab.com/ee/user/project/import/github.html
确保您想要映射到 GitLab 用户的任何 GitHub 用户都具有以下两项:
在顶部导航栏中,单击 + 并选择 New project。
但请阅读 GitLab 文档页面的细节和挂钩!
(不是很多)
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
我找到了最好最简单的方法 给你,对我来说非常有效,它可以把所有的标签和分支从原来的地方推到新的遥控器上:
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日
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日