是否可以将 public GitHub 存储库分叉到企业存储库中?

Is it possible to fork a public GitHub repo into an enterprise repository?

Quick 框架 here 存在 public 存储库。我希望能够将其分叉到私有企业 GitHub 存储库中。分叉将允许所有分支保留。

另一种方法是克隆存储库并仅将一个分支推送到企业,但我失去了 source/original 中没有的所有分支。

更新: 我最终将我所有的分支都推向了企业 git。 如果您只是执行 git push yourRemoteName myNewBranch,那么它会将代码推送到企业 git 的那个分支,同时在企业 GitHub 中创建那个分支。

不可能,因为您的 GitHub Enterprise (GHE) 安装与 public 安装是分开的,因此两个系统无法跟踪彼此的分支关系。

您能做的最好的就是完全按照您的描述:克隆存储库,然后将其推送到您的 GHE 安装,是的,您将失去跨存储库的分支关系。

另一种选择是在 public GitHub (GH) 存储库上保留一个分支——可能使其与您的 GHE 存储库保持同步(手动或使用 cronjob)。然后你将有两个你的回购实例,public 一个将保留与原始回购的分支关系。

根据您需要将其放在 GHE 上的原因,它可能有效也可能无效。如果您要进行私人贡献,那显然是行不通的——因为您的私人贡献将不再是私人的。如果由于某些公司政策(内部使用的所有开源项目都保存在 GHE 或类似的东西上)而你希望它在 GHE 上,那么它会起作用,但增加了保持回购同步两个地方的管理开销。

虽然无法从 public GitHub 直接 分支到您的企业安装,您可以在 public GitHub 上进行分叉,然后在您的企业安装中镜像该分叉的存储库。

步骤

  1. 在您的企业上创建一个空存储库 GitHub:
    curl https://github.yourenterprise.com/api/v3/user/repos \
      -u "yourUsername" \
      -d "{\"name\": \"whatever-repository\", \"private\": true }"
    
  2. 创建你的分支的裸克隆
    git clone --bare https://github.com/publicGitHubUser/forked-repository.git
    
  3. 更改目录,使您位于裸克隆文件夹中:
    cd ./whatever-repository.git/
    
  4. 将带有 --mirror 标志的存储库推送到您的企业 GitHub
    git push --mirror https://github.yourenterprise.com/enterpriseGitHubUser/forked-repository.git
    

更多信息

https://help.github.com/articles/duplicating-a-repository/

如果您使用 GitHub Enterprise,那么您会自动获得 GitHub Enterprise Cloud 的访问权限,即 https://github.com/enterprises/mycompany,许可证数量相同。这可以通过 SAML 链接到您的内部 Active Directory。然后您可以简单地在 GitHub 中分叉它,但将其保留在您公司的控制范围内。

遗憾的是,如果您在内部实例上确实需要它,您仍然需要镜像克隆它。但是,当您现在控制两端时,您应该能够使用 GitHub 操作(或应用程序)更智能地使它们保持同步。