跳至主要内容

以编程方式导入仓库

您可以以编程方式将仓库导入到 GitHub。

关于仓库的程序化导入

在以下指南中,您可以了解如何以编程方式运行 Git 仓库到 GitHub 的“源代码和历史记录”迁移。根据仓库的存储位置,可以使用不同的选项。

要详细了解“源代码和历史记录”以及其他类型的迁移,请参阅“计划迁移到 GitHub”。

术语“源仓库”是指您要导入的仓库,“导入的仓库”是指您要创建的新仓库。

使用 fork

如果源仓库位于 GitHub 上,您可以使用 fork 而不是导入仓库。Fork 允许您对项目进行更改,而不会影响原始仓库(也称为“上游”仓库)。分叉仓库后,您可以从上游仓库获取更新以保持 fork 最新,并且可以使用拉取请求提出来自 fork 的更改到上游仓库。有关详细信息,请参阅“关于 fork”。

您可以使用 REST API 以编程方式分叉仓库。有关详细信息,请参阅“fork 的 REST API 端点”。

如果您的用例符合以下任何条件,则不能使用 fork 代替直接导入仓库。

  • 您希望导入的仓库由与源仓库相同的用户或组织拥有。
  • 您希望一个用户或组织能够多次导入相同的源仓库。

使用仓库模板

如果源仓库位于 GitHub 上,您可以使用仓库模板。您可以从现有仓库创建模板。任何有权访问模板仓库的人员都可以基于该模板创建新的仓库,该仓库具有相同的目录结构、分支和文件。有关更多详细信息,请参阅“创建模板仓库”。

要使用仓库模板,您必须拥有对作为模板的现有仓库的读取权限,或者必须有权创建模板。

您可以使用 REST API 以编程方式从仓库模板创建仓库。有关详细信息,请参阅“仓库的 REST API 端点”。

使用 GitHub Enterprise 导入器

如果源仓库托管在 GitHub、GitHub Enterprise Server、Azure DevOps Services、Bitbucket Server 或 Bitbucket Data Center 上,您可以使用 GitHub Enterprise 导入器导入仓库。有关详细信息,请参阅“关于 GitHub Enterprise 导入器”。

除了源代码和版本控制历史记录外,GitHub Enterprise 导入器还会迁移问题、拉取请求、设置等。

要使用 GitHub Enterprise 导入器,您必须对源仓库拥有管理员访问权限。

您可以使用 GraphQL API 以编程方式使用 GitHub Enterprise 导入器导入仓库。

使用 Git CLI

如果源仓库是 Git 仓库,您可以从代码中以编程方式调用 Git CLI。您可以使用 GitHub 的 REST API 以编程方式创建仓库,然后使用 git clonegit push 等命令将仓库导入到 GitHub。

调用 Git CLI 的方式因代码的语言而异。例如,在 Node.js 中,您可以使用 child_process 模块,或者在 Ruby 中,您可以使用 open3 模块。有关详细信息,请参阅 Node.js 文档中的子进程或 GitHub 上的ruby/open3 仓库

要使用 Git CLI,您必须能够在托管应用程序的系统上安装 Git。有关更多信息,请参阅 Git 文档中的入门 - 安装 Git

使用 GitHub CLI

如果源存储库是 Git 存储库,则可以从代码中以编程方式调用 GitHub CLI 程序。您可以使用 gh repo create 创建存储库。有关更多信息,请参阅“关于 GitHub CLI”。

进一步阅读