# Importación de repositorios mediante programación

Puede importar repositorios mediante programación a GitHub.

## Acerca de la importación mediante programación de repositorios

En la siguiente guía, puede aprender a ejecutar mediante programación migraciones de "origen e historial" de repositorios de Git a GitHub. Hay diferentes opciones disponibles en función de dónde se almacene el repositorio.

Para obtener más información sobre "origen e historial" y otros tipos de migraciones, consulta [Planeamiento de la migración a GitHub](/es/migrations/overview/planning-your-migration-to-github).

El término "repositorio de origen" hace referencia al repositorio que va a importar y "repositorio importado" hace referencia al nuevo repositorio que está creando.

## Uso de bifurcaciones

Si el repositorio de origen está en GitHub, es posible que pueda usar una bifurcación en lugar de importar el repositorio. Las bifurcaciones te permiten realizar cambios a un proyecto sin afectar el repositorio original, también conocido como el repositorio ascendente.

Después de bifurcar un repositorio, puedes:

* Capturar actualizaciones del repositorio ascendente para mantener la bifurcación actualizada
* Contribuir de nuevo al proyecto original mediante la creación de solicitudes de incorporación de cambios desde la bifurcación. Para obtener más información, consulta [Horquillas](/es/pull-requests/reference/forks).

Puede bifurcar mediante programación un repositorio usando la API de REST. Para más información, consulta [Endpoints de la API REST para forks](/es/rest/repos/forks).

Si el caso de uso cumple cualquiera de los siguientes criterios, no puede usar la bifurcación en lugar de importar directamente el repositorio.

* Quiere que el repositorio importado sea propiedad del mismo usuario u organización que el repositorio de origen.
* Quiere que un usuario u organización pueda importar el mismo repositorio de origen varias veces.

## Uso de las plantillas de repositorio

Si el repositorio de origen está en GitHub, puede usar plantillas de repositorio.
Puede crear una plantilla a partir de un repositorio existente. Cualquier persona con acceso al repositorio de plantillas puede crear un nuevo repositorio basado en la plantilla con la misma estructura de directorios, ramas y archivos. Para obtener más información, consulte [Crear un repositorio de plantilla](/es/repositories/creating-and-managing-repositories/creating-a-template-repository).

Para usar plantillas de repositorio, debe tener acceso de lectura a un repositorio existente que sea una plantilla o debe tener acceso para crear una plantilla.

Puede crear mediante programación un repositorio a partir de una plantilla de repositorio mediante la API de REST. Para más información, consulta [Puntos de conexión de la API de REST para repositorios](/es/rest/repos/repos).

## Uso de GitHub Enterprise Importer

Si el repositorio de origen se hospeda en GitHub, GitHub Enterprise Server, Azure DevOps Services, Bitbucket Server o Bitbucket Data Center, puede importar el repositorio mediante GitHub Enterprise Importer. Para más información, consulta [Acerca de GitHub Enterprise Importer](/es/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer).

Además del historial de control de versiones y de origen, GitHub Enterprise Importer también migra problemas, solicitudes de incorporación de cambios, configuración y mucho más.

Para usar GitHub Enterprise Importer, debe tener acceso de administrador al repositorio de origen.

Puede importar repositorios de forma programática con GitHub Enterprise Importer la API de GraphQL.

## Mediante la CLI de Git

Si el repositorio de origen es un repositorio de Git, puede llamar a la CLI de Git mediante programación desde el código. Puede crear un repositorio de forma programática mediante la API REST de GitHub y, a continuación, usar comandos como `git clone` y `git push` para importar el repositorio a GitHub.

La forma de llamar a la CLI de Git difiere en función del lenguaje del código. Por ejemplo, en Node.js, puede usar el módulo `child_process` o en Ruby, puede usar el módulo `open3`. Para obtener más información, consulte [Proceso secundario](https://nodejs.org/api/child_process.html) en la documentación de Node.js o el [repositorio ruby/open3](https://github.com/ruby/open3) en GitHub.

Para usar la CLI de Git, debe tener acceso para instalar Git en el sistema que hospeda la aplicación. Para obtener más información, consulte "[Introducción: instalación de Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)" en la documentación de Git.

## Uso de GitHub CLI

Si el repositorio de origen es un repositorio Git, puede llamar a GitHub CLI mediante programación desde su código. Puede usar `gh repo create` para crear un repositorio. Para más información, consulta [Acerca de GitHub CLI](/es/github-cli/github-cli/about-github-cli).

## Información adicional

* [Puntos de conexión de la API de REST para repositorios](/es/rest/repos/repos)