Eventos
Realizar el desafío de Microsoft Learn
19 nov, 23 - 10 ene, 23
Ignite Edition: cree aptitudes en Microsoft Azure y obtenga un distintivo digital el 10 de enero.
Regístrese ahoraEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
En este artículo se explica cómo importar un repositorio Git existente desde GitHub, Bitbucket, GitLab u otra ubicación en un repositorio nuevo o vacío existente en el proyecto de Azure DevOps.
Nota
Una vez completada la importación del repositorio, Azure DevOps establece la rama predeterminada para ese repositorio importado. Si el repositorio importado contiene una rama denominada master
, se establece como la rama predeterminada; de lo contrario, la primera rama (en orden alfabético) del repositorio importado se establece como predeterminada.
Seleccione Repositorios > Archivos.
En la lista desplegable del repositorio, seleccione Importar repositorio.
Si el repositorio de origen está disponible públicamente, basta con escribir la dirección URL de clonación del repositorio de origen y un nombre para el nuevo repositorio Git.
Si el repositorio de origen es privado, pero se puede acceder a él mediante autenticación básica (nombre de usuario+contraseña, un token de acceso personal, etc.), seleccione Requiere autorización y escriba sus credenciales. No se puede usar la autenticación SSH, pero sí importar manualmente un repositorio que use la autenticación SSH; para ello, siga los pasos descritos en Importación manual de un repositorio mediante la CLI de Git.
En la página Archivos del repositorio Git vacío, seleccione Importar y escriba la dirección URL de clonación. Deberá proporcionar credenciales si el repositorio de origen requiere autenticación.
Nota
La característica de importación deshabilita la vinculación automatizada de los elementos de trabajo mencionados en un comentario de confirmación, ya que es posible que los identificadores de esos elementos de trabajo del proyecto de destino no sean los mismos que los del proyecto de origen. Para volver a habilitar la vinculación automática de los elementos de trabajo mencionados en una confirmación, vaya a Configuración, Control de versiones, seleccione el repositorio y, luego, Opciones. Para obtener más información sobre cómo vincular confirmaciones con elementos de trabajo, vea Vinculación de elementos de trabajo con confirmaciones.
Se puede usar az repos import para importar un repositorio a su proyecto de Azure DevOps.
Nota
Para poder importar un repositorio Git, antes deberá crear el repositorio en Azure DevOps. Además, el repositorio que cree debe estar vacío. Para crear un repositorio, vea Creación de un repositorio Git en Azure Repos.
az repos import create --git-source-url
[--detect {false, true}]
[--git-service-endpoint-id]
[--org]
[--project]
[--repository]
[--requires-authorization]
[--subscription]
[--user-name]
Parámetros
Parámetro | Descripción |
---|---|
git-source-url |
Necesario. Dirección URL del repositorio Git de origen que se va a importar. |
detect |
Opcional. Detecta automáticamente la organización. Valores aceptados: false , true . |
git-service-endpoint-id |
Opcional. Punto de conexión de servicio para conectar con el punto de conexión externo. |
org , organization |
URL de la organización de Azure DevOps. Puede configurar la organización predeterminada mediante az devops configure -d organization=<ORG_URL> . Obligatorio si no está configurado como predeterminado o seleccionado mediante la configuración de Git. Ejemplo: https://dev.azure.com/MyOrganizationName/ . |
project , p |
Nombre o id. del proyecto. Puede configurar el proyecto predeterminado mediante az devops configure -d project=<NAME_OR_ID> . Obligatorio si no está configurado como predeterminado o seleccionado mediante la configuración de Git. |
repository |
Nombre o identificador del repositorio en el que se va a crear la solicitud de importación. |
requires-authorization |
Marca para indicar si el repositorio Git de origen es privado. Si necesita autenticación, genere un token de autenticación en el repositorio de origen y establezca la variable de entorno AZURE_DEVOPS_EXT_GIT_SOURCE_PASSWORD_OR_PAT en el valor del token. La solicitud de importación incluirá la autenticación. |
subscription |
Nombre o identificador de la suscripción Puede configurar la suscripción predeterminada mediante az account set -s <NAME_OR_ID> . |
user-name |
Nombre de usuario que se va a especificar cuando el repositorio Git es privado. |
Ejemplo
El siguiente comando importa el repositorio público fabrikam-open-source al repositorio Git vacío fabrikam-open-source para la configuración predeterminada az devops configure --defaults organization=https://dev.azure.com/fabrikamprime project="Fabrikam Fiber"
.
az repos import create --git-source-url https://github.com/fabrikamprime/fabrikam-open-source --repository fabrikam-open-source
{
"detailedStatus": {
"allSteps": [
"Processing request",
"Analyzing repository objects",
"Storing objects",
"Storing index file",
"Updating references",
"Import completed successfully"
],
"currentStep": 6,
"errorMessage": null
},
"importRequestId": 8,
"parameters": {
"deleteServiceEndpointAfterImportIsDone": null,
"gitSource": {
"overwrite": false,
"url": "https://github.com/fabrikamprime/fabrikam-open-source"
},
"serviceEndpointId": null,
"tfvcSource": null
},
"repository": {
"defaultBranch": null,
"id": "0f6919cd-a4db-4f34-a73f-2354114a66c4",
"isDisabled": false,
"isFork": null,
"name": "new-empty-repo",
"parentRepository": null,
"project": {
"abbreviation": null,
"defaultTeamImageUrl": null,
"description": "Guidance and source control to foster a vibrant ecosystem for Fabrikam Fiber applications and extensions.",
"id": "56af920d-393b-4236-9a07-24439ccaa85c",
"lastUpdateTime": "2021-05-24T21:52:14.95Z",
"name": "Fabrikam Fiber",
"revision": 438023732,
"state": "wellFormed",
"url": "https://dev.azure.com/fabrikamprime/_apis/projects/56af920d-393b-4236-9a07-24439ccaa85c",
"visibility": "private"
},
"remoteUrl": "https://fabrikamprime@dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_git/fabrikam-open-source",
"size": 12477,
"sshUrl": "git@ssh.dev.azure.com:v3/kelliott/Fabrikam%20Fiber/new-empty-repo",
"url": "https://dev.azure.com/fabrikamprime/56af920d-393b-4236-9a07-24439ccaa85c/_apis/git/repositories/0f6919cd-a4db-4f34-a73f-2354114a66c4",
"validRemoteUrls": null,
"webUrl": "https://dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_git/fabrikam-open-source"
},
"status": "completed",
"url": "https://dev.azure.com/fabrikamprime/Fabrikam%20Fiber/_apis/git/repositories/0f6919cd-a4db-4f34-a73f-2354114a66c4/importRequests/8"
}
La característica de importación de repositorio se incluyó a partir de TFS 2017 Update 1. Si usa TFS 2017 RTM o una versión anterior, puede usar los siguientes pasos para importar un repositorio manualmente a TFS. También puede seguir estos pasos para importar un repositorio manualmente a un repositorio de Azure DevOps Services, reemplazando TFS por Azure Repos.
Clone el repositorio de origen en una carpeta temporal del equipo con la opción bare
, como se muestra en el siguiente ejemplo de línea de comandos, y luego vaya a la carpeta del repositorio. Cuando se clona con la opción bare
, el nombre de la carpeta incluye el sufijo .git
. En este ejemplo, https://github.com/contoso/old-contoso-repo.git
es el repositorio de origen que se va a importar manualmente.
git clone --bare https://github.com/contoso/old-contoso-repo.git
cd old-contoso-repo.git
Cree un repositorio de destino con TFS 2017 RTM y anote la dirección URL de clonación. En este ejemplo, https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
es la dirección URL del nuevo repositorio de destino.
Ejecute el siguiente comando para copiar el repositorio de origen en el repositorio de destino.
git push --mirror https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
Advertencia
Usar --mirror
hará que se sobrescriban todas las ramas del repositorio de destino, lo que incluye eliminar las ramas que no estén en el repositorio de origen.
Si el repositorio de origen tiene objetos LFS, captúrelos y cópielos del repositorio de origen en el repositorio de destino.
git lfs fetch origin --all
git lfs push --all https://dev.azure.com/contoso-ltd/MyFirstProject/_git/new-contoso-repo
Para eliminar la carpeta temporal, ejecute los siguientes comandos.
cd ..
rm -rf old-contoso-repo.git
Aunque la mayoría de las veces la importación se realiza correctamente, las siguientes situaciones pueden causar problemas.
El servicio de importación usa API REST para validar y desencadenar la importación, y no puede trabajar directamente con repositorios que requieran autenticación en dos fases. La mayoría de los proveedores de hospedaje de Git, como GitHub y Azure DevOps Services, admite tokens personales que se pueden proporcionar al servicio de importación.
El servicio de importación usa la funcionalidad multi_ack del protocolo Git durante la importación. Si el repositorio de origen no proporciona esta funcionalidad, es posible que el servicio de importación no pueda realizar la importación desde el origen especificado. Este error puede producirse al crear una solicitud de importación o mientras la importación está en curso.
Si el repositorio Git de origen está en una versión de TFS anterior a TFS 2017 RTM, se producirá un error en la importación. Esto sucede debido a una discrepancia de contrato entre las versiones más recientes de Azure DevOps Services/TFS y las versiones de TFS anteriores a 2017 RTM.
Desafortunadamente, las credenciales basadas en MSA (cuenta Microsoft, anteriormente Live ID) no funcionarán. El servicio de importación emplea una autenticación básica para comunicarse con el repositorio de origen. Si el nombre de usuario o la contraseña que use no pertenecen a la autenticación básica, se producirá un error en la autenticación y la importación no se llevará a cabo. Una manera de comprobar si el nombre de usuario o la contraseña que está usando pertenecen o no a la autenticación básica es intentar usar Git para clonar el repositorio con el siguiente formato.
git clone https://<<username>>:<<password>>@<<remaining clone Url>>
Se puede migrar código de un repositorio TFVC existente a un nuevo repositorio Git dentro de la misma cuenta. Aunque la migración a Git tiene muchas ventajas, se trata de un proceso complicado para los equipos y los repositorios de TFVC grandes. Los sistemas de control de versiones centralizados, como TFVC, se comportan en esencia de forma distinta a Git. El cambio acarrea mucho más que aprender nuevos comandos. Se trata de un cambio trascendental que precisa una planificación meticulosa. Para obtener más información, vea Importación de TFVC a Git.
La importación de Git no importará los objetos LFS de Git.
Para mover objetos LFS, puede hacer lo siguiente:
Para mover los archivos LFS (necesitará tener tanto Git.exe como el cliente LFS en el mismo sitio, así como acceso al repositorio tanto de origen como de destino):
git lfs fetch source --all
(esto trasladará todos los archivos LFS del origen al repositorio local).git lfs push target --all
.El servicio de importación sirve para importar inicialmente un repositorio entero. Para reflejar los cambios que se produzcan posteriormente, necesitará un clon local del repositorio con referencias remotas establecidas en el origen y el destino.
Los cambios se pueden sincronizar mediante los siguientes comandos.
Consideraremos la importación de Azure Repos como origin
y el repositorio original como upstream
.
git clone --bare <Azure-Repos-clone-URL>.git
cd <name-of-repo>
git remote add --mirror=fetch upstream <original-repo-URL>
git fetch upstream --tags
git push origin --all
Eventos
Realizar el desafío de Microsoft Learn
19 nov, 23 - 10 ene, 23
Ignite Edition: cree aptitudes en Microsoft Azure y obtenga un distintivo digital el 10 de enero.
Regístrese ahoraCursos
Módulo
Migración de canalizaciones de CI/CD a GitHub con el Importador de Acciones de GitHub - Training
Obtenga información sobre el Importador de Acciones de GitHub y cómo puede facilitar las migraciones de la herramienta de CI/CD actual a Acciones de GitHub.
Documentación
Traslado de repositorios de Git entre proyectos - Azure Repos
Explore cómo mover repositorios de Git entre proyectos de equipo con un historial de fidelidad completa.
Clonación de un repositorio de Git existente - Azure Repos
Aprenda a crear un clon local de cualquier repositorio de Git remoto mediante Visual Studio o la línea de comandos de Git.
Creación de un repositorio de Git en el proyecto - Azure Repos
Creación de un repositorio de Git en un proyecto de Azure DevOps Services o Team Foundation Server