Close

git clone

Aquí examinaremos el comando git clone en profundidad. git clone es una utilidad de línea de comandos de Git que se utiliza para fijar como objetivo un repositorio existente con el fin de clonarlo o copiarlo. En esta página, analizaremos las amplias opciones de configuración y los casos de uso comunes de git clone. Algunos puntos que trataremos aquí son los siguientes:

  • Clonar un repositorio local o remoto
  • Clonar un repositorio bare (vacío)
  • Utilizar opciones superficiales para clonar repositorios parcialmente
  • Sintaxis de las URL de Git y protocolos admitidos

En la guía Configuración de un repositorio, hemos explicado un caso de uso básico de git clone. En esta exploraremos situaciones de clonación y configuración más complejas.


Objetivo: copia de desarrollo de la colaboración entre repositorios


Si un proyecto ya se ha configurado en un repositorio central, el comando git clone es la manera más común de que los usuarios obtengan una copia de desarrollo. Al igual que git init, la clonación suele ser una operación única. Una vez que un desarrollador ha obtenido una copia de trabajo, todas las operaciones de control de versiones se gestionan por medio de su repositorio local.

Colaboración entre repositorios

Es importante comprender que la idea de "copia de trabajo" de Git es muy distinta a la copia de trabajo que se obtiene al extraer código de un repositorio SVN. A diferencia de SVN, Git no distingue entre la copia de trabajo y el repositorio central: todos son repositorios Git completos.

Por tanto, colaborar con Git es intrínsecamente distinto que con SVN. Mientras que SVN depende de la relación entre el repositorio central y la copia de trabajo, el modelo de colaboración de Git se basa en la interacción entre repositorios. En lugar de insertar una copia de trabajo en el repositorio central de SVN, las confirmaciones se envían o se incorporan cambios de un repositorio a otro.

rama de git
Material relacionado

rama de git

Logotipo de Bitbucket
VER LA SOLUCIÓN

Aprende a usar Git con Bitbucket Cloud

Tutorial de Git: repositorio a colaboración de copia de trabajo
Tutorial de Git: colaboración entre repositorios

Por supuesto, nada te impide dar un significado especial a ciertos repositorios Git. Por ejemplo, con solo definir un repositorio de Git como el "central", se puede replicar un flujo de trabajo centralizado usando Git. La idea es que esto se consigue por medio de convenciones, no porque esté integrado en el propio VCS.

Uso


git clone se utiliza principalmente para apuntar a un repositorio existente y clonar o copiar dicho repositorio en un nuevo directorio, en otra ubicación. El repositorio original se puede localizar en el sistema de archivos local o en los protocolos admitidos a los que se puede acceder por máquina remota. El comando git clone copia un repositorio de Git existente. Es una especie de SVN checkout, salvo por el hecho de que la "copia de trabajo" es un repositorio de Git completo: tiene su propio historial, administra sus propios archivos y es un entorno completamente aislado del repositorio original.

Por comodidad, la clonación crea automáticamente una conexión remota llamada "origin" que apunta al repositorio original. Gracias a esto, es muy fácil interactuar con un repositorio central. Esta conexión automática se establece creando referencias de Git a los encabezados de la rama remota en refs/remotes/origin e inicializando las variables de configuración remote.origin.url y remote.origin.fetch.

Puedes encontrar un ejemplo en el que se ilustra cómo usar git clone en la guía Configuración de un repositorio. El siguiente ejemplo ilustra cómo obtener una copia local de un repositorio central almacenado en un servidor accesible desde example.com utilizando "john" como nombre de usuario de SSH:

git clone ssh://john@example.com/path/to/my-project.git 
cd my-project 
# Start working on the project

El primer comando inicializa un nuevo repositorio de Git en la carpeta my-project de tu máquina local y lo rellena con el contenido del repositorio central. A continuación, puedes hacer cd en el proyecto y empezar a editar los archivos, confirmar instantáneas e interactuar con otros repositorios. Asimismo, ten en cuenta que la extensión .git se omite del repositorio clonado. Esto refleja que el estado de la copia local no es bare.

Clonación a una carpeta específica

git clone <repo> <directory>

Clona el repositorio ubicado en <repo> en la carpeta llamada ~<directory>! en la máquina local.

Clonación de una etiqueta específica

git clone --branch <tag> <repo>

Clona el repositorio ubicado en <repo> y clona solamente la referencia para <tag>.

Clonación superficial

git clone -depth=1 <repo>

Clona el repositorio ubicado en < repo > y clona solamente el historial de confirmaciones especificado por la opción depth=1. En este ejemplo, se realiza una clonación de < repo > y solo se incluye la confirmación más reciente en el nuevo repositorio clonado. La clonación superficial es muy útil cuando se trabaja con repositorios que tienen un largo historial de confirmaciones. Un largo historial de confirmaciones podría causar problemas de escalado, como límites de uso del espacio de disco y largos tiempos de espera en la clonación. Una clonación superficial puede mitigar estas incidencias de escalado.

Opciones de configuración


git clone -branch

El argumento -branch permite especificar una rama concreta para clonarla en vez de la rama a la que apunta el HEAD remoto, normalmente la rama principal. Asimismo, puedes incluir una etiqueta en vez de una rama con el mismo efecto.

git clone --branch

git clone -mirror frente a git clone -bare

git clone --bare

Al igual que sucede con git init --bare, cuando se usa el argumento -bare en git clone, se efectuará una copia del repositorio remoto con un directorio de trabajo omitido. Esto significa que se configurará un repositorio con el historial del proyecto que puede enviarse y del que se pueden incorporar cambios, pero que no se puede editar directamente. Asimismo, no se configurará ninguna rama remota para el repositorio con el repositorio -bare. Al igual que git init --bare, se utiliza para crear un repositorio alojado que los desarrolladores no editarán directamente.

git clone --mirror

Al usar el argumento --mirror, también se usa implícitamente el argumento --bare. Esto significa que el comportamiento de --bare se hereda de --mirror, lo que da como resultado un repositorio bare sin archivos de trabajo editables. Además, --mirror clonará todas las referencias extendidas del repositorio remoto y mantendrá la configuración de seguimiento de la rama remota. Acto seguido, puedes actualizar git remote en el servidor reflejado, y esta acción sobrescribirá todas las referencias del repositorio de origen, lo cual te brindará la función de "reflejo" exacta.

Otras opciones de configuración

Para ver una lista exhaustiva del resto de las opciones de git clone, consulta la documentación oficial de Git. En este documento, mencionaremos brevemente otras opciones comunes.

git clone --template

git clone --template=<template_directory> <repo location>

Clona el repositorio en <repo location> y aplica la plantilla de <template directory> a la rama local creada recientemente. Puedes consultar una referencia completa sobre las plantillas de Git en nuestra página de git init.

URL de Git


Git tiene su propia sintaxis para las URL, que se usa para pasar ubicaciones del repositorio remotas a comandos Git. Como git clone se utiliza más habitualmente en repositorios remotos, examinaremos la sintaxis de las URL de Git aquí.

Protocolos de URL de Git

'-SSH

Secure Shell (SSH) es un extendido protocolo de red autenticada que se configura habitualmente de manera predeterminada en la mayoría de los servidores. Como SSH es un protocolo autenticado, tendrás que establecer credenciales con el servidor de alojamiento antes de conectarte. ssh://[user@]host.xz[:port]/path/to/repo.git/

'- GIT

Un protocolo único de Git. Git incluye un daemon que se ejecuta en el puerto (9418). El protocolo es similar a SSH. Sin embargo, NO tiene autenticación. git://host.xz[:port]/path/to/repo.git/

'- HTTP

Protocolo de transferencia de hipertexto. El protocolo de la web, utilizado habitualmente para transferir datos HTML de páginas web por Internet. Git se puede configurar para comunicarse por HTTP http[s]://host.xz[:port]/path/to/repo.git/

Resumen


En este documento, hemos examinado en detalle git clone. Los puntos más importantes son los siguientes:

1. git clone se utiliza para crear una copia de un repositorio objetivo.

2. El repositorio objetivo puede ser local o remoto.

3. Git admite unos cuantos protocolos de red para conectarse a repositorios remotos.

4. Hay muchas opciones de configuración disponibles que cambian el contenido del clon

Si quieres leer una referencia más detallada sobre la funcionalidad de git clone, consulta la documentación oficial de Git. Asimismo, incluimos ejemplos prácticos de git clone en nuestra guía Configuración de un repositorio.


Compartir este artículo
Tema siguiente

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Gente que colabora utilizando un muro lleno de herramientas

Blog de Bitbucket

Ilustración de Devops

Ruta de aprendizaje de DevOps

Demostraciones de funciones con expertos de Atlassian del Centro de demostraciones

Cómo funciona Bitbucket Cloud con Atlassian Open DevOps

Suscríbete para recibir el boletín de DevOps

Thank you for signing up