【问题标题】:Is it possible to fork a public GitHub repo into an enterprise repository?是否可以将公共 GitHub 存储库分叉到企业存储库中?
【发布时间】:2015-07-09 05:29:36
【问题描述】:

Quick 框架 here 有一个公共仓库。我希望能够将它分叉到一个私有企业 GitHub 存储库中。分叉将允许所有分支保留。

另一种方法是克隆 repo 并仅将一个分支推送到企业,但是我失去了没有来自源/原始的所有分支。

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

【问题讨论】:

  • 是什么阻止您手动推送所有分支?

标签: git github git-branch


【解决方案1】:

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

您能做的最好的事情就是您所描述的:克隆 repo,然后将其推送到您的 GHE 安装,是的,您将失去跨 repos 的分支关系。

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

根据您需要将其放在 GHE 上的原因,它可能有效,也可能无效。如果您正在进行私人捐款,那显然是行不通的——因为您的私人捐款将不再是私人的。如果您因为某些公司政策将其放在 GHE 上,即内部使用的所有开源项目都保存在 GHE 上或类似的东西上,那么它会起作用,但会增加使存储库在两个地方同步的管理开销。

【讨论】:

  • 您可以通过使用--mirror 参数进行克隆和推送来保留分支。
【解决方案2】:

虽然无法从公共 GitHub直接 分叉到您的企业安装,但您可以在公共 GitHub 上分叉,然后将该分叉的存储库镜像到您的企业安装。

步骤

  1. 在您的企业 GitHub 上创建一个空存储库:
    curl https://github.yourenterprise.com/api/v3/user/repos \
      -u "yourUsername" \
      -d "{\"name\": \"whatever-repository\", \"private\": true }"
    
  2. 创建你的 fork 的裸克隆
    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/

【讨论】:

  • 是否可以添加一个屏幕截图来显示最后的样子。
  • 这个答案真的很有帮助,但作为一个 git "paduan",我不知道下一步该做什么。我想 fork 项目 github.com/foo.git 并在 enterprise.github.com/bar.git 上处理它。所以我跟着你的所有步骤。我的计算机上有 foo.git,企业上有 bar.git(通过简单的 repo 名称更改)。正如预期的那样,bar.git 是 foo.git 的克隆。但是我电脑上的 foo.git 是一个空仓库,没有我可以编辑的东西。我收集我需要将 bar.git 克隆到我的计算机上以便我可以编辑,然后将其推送到企业?但是当 foo.git 发生变化时如何更新 bar.git 呢?
  • @AstroBen 你能在 stackoverflow 或 github 上问这个问题吗?我也有兴趣知道答案
【解决方案3】:

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

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

【讨论】:

  • 如果您的公司专门使用自己托管的 github 企业服务器,然后将任何公司拥有的提交存储到第三方的 repo,github 企业云可能会给您带来麻烦。
  • 是的,但 OP 正在谈论分叉公共/开源存储库。在这种情况下,您为此编写的任何代码都不太可能保密(至少如果您打算在产品中使用),因为这会违反操作系统许可的条款,
  • 在我工作过的大型科技公司中,使用带有不适合一般用途的补丁/黑客的私有分支并不罕见,并且不做回馈上游的工作。此外,许多软件都是为内部使用而编写的,无论是作为测试代码还是基础架构代码。
猜你喜欢
  • 2022-11-20
  • 2012-04-21
  • 2020-02-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 2021-07-24
  • 2017-08-18
  • 2018-12-01
相关资源
最近更新 更多