Saltar al contenido

git clone

Descripción

El comando git clone crea un clon/copia de un repositorio existente en un nuevo directorio. También se usa para crear ramas de seguimiento remoto para cada rama del repositorio clonado. Es el comando más común que permite a los usuarios obtener una copia de desarrollo de un repositorio central existente.

Gitclone

Uso de git clone

Ante todo, el comando git clone se usa para apuntar a un repositorio existente y clonarlo o copiarlo en un nuevo directorio. Se puede obtener una copia local almacenada en un servidor, accesible en example.com, usando el nombre de usuario SSH x_person, así:

git clone <repo>

bash
git clone ssh://[email protected]/path/to/team-project.git
cd team-project
# You must work on this project

git clone inicializa un nuevo repositorio Git en la carpeta team-project en tu máquina local y lo llena con el contenido del repositorio central. Después de eso, puedes hacer cd al proyecto para empezar a modificar archivos, confirmar instantáneas e interactuar con otros repositorios.

Clonar en una carpeta determinada

Debes hacer una copia del repositorio en <repo> dentro de la carpeta llamada <directory> en la máquina local.

git clone <repo> <directory>

bash
git clone <repo> <directory>

Clonar una etiqueta determinada

Clona el repositorio en <repo> y clona solo la referencia de <tag>.

git clone --branch <tag> <repo>

bash
git clone --branch <tag> <repo>

Diferencia entre git init y git clone

git init y git clone suelen confundirse entre sí. Aquí es importante señalar que git init crea un nuevo repositorio local vacío, mientras que git clone copia un repositorio remoto existente a tu máquina local. git clone no requiere que ejecutes primero git init; inicializa automáticamente el repositorio local y configura las ramas de seguimiento remoto.

Opciones de configuración de Git Clone

Las opciones de configuración son las herramientas que necesitas para hacer que Git funcione de la manera que mejor se adapte a ti o a tu equipo. Las más comunes se presentan a continuación:

  1. git clone --branch <repo>

    El argumento --branch especifica una rama que debe clonarse en lugar de la que indica el HEAD remoto, normalmente la rama master. Además, puedes pasar una etiqueta en lugar de una rama para obtener el mismo efecto. Usando el ejemplo siguiente, tendrás un clon de la rama new_feature del repositorio remoto:

git clone --branch <repo>

bash
git clone --branch new_feature git://remoterepository.git
  1. git clone --bare <repo>

    Con el argumento --bare pasado a git clone, tendrás una copia del repositorio remoto creada sin un directorio de trabajo. Así, el repositorio se creará con el historial del proyecto, desde el cual se puede hacer push o pull, pero no editar.

  2. git clone --mirror <repo>

    El comportamiento del argumento --bare es heredado por --mirror, lo que significa que al pasar el argumento --mirror también se aplicará --bare. El argumento --mirror clonará todas las referencias extendidas del repositorio remoto. También te permitirá mantener una configuración de seguimiento de ramas remotas.

URLs de Git

Git tiene su propia sintaxis de URL. Se usa para transferir ubicaciones de repositorios remotos a los comandos de Git. Las URLs de Git son importantes porque git clone se usa principalmente en repositorios remotos.

Protocolos de URL de Git

Git puede usar los siguientes protocolos para la transferencia de datos: Git, Secure Shell (SSH), HTTPS y Local. Cabe señalar que todos estos protocolos requieren que Git esté instalado y funcionando en el servidor, excepto HTTPS.

  1. Git

    El protocolo Git es exclusivo de Git. Es un daemon especial que se ejecuta en el puerto 9418 y proporciona un servicio similar a SSH pero sin autenticación.

git clone git:// <repo>

bash
git://host.xz[:port]/path/to/repo.git/

La ventaja del protocolo Git es una transferencia rápida. El protocolo Git también tiene algunas desventajas: la ausencia de autenticación y la dificultad de configuración del protocolo.

  1. SSH

    Secure Shell (SSH) es un protocolo de red que ayuda a iniciar sesión de forma segura de una computadora a otra. En la mayoría de los casos, el acceso SSH a los servidores está configurado de forma predeterminada. Es necesario establecer credenciales con el servidor de alojamiento antes de conectarse.

git clone ssh:// <repo>

bash
git clone ssh://user@server/project.git

SSH es el único protocolo de red que puede leerse y escribirse fácilmente en los repositorios. SSH tiene muchas otras ventajas, como una configuración sencilla, acceso seguro (toda la transferencia de datos está cifrada y autenticada) y compacidad de los datos antes de su transferencia. La desventaja de SSH es que no admite acceso anónimo al repositorio Git. Puedes encontrar más información sobre las claves SSH en nuestra sección SSH key.

  1. HTTPS

    HTTPS significa HyperText Transfer Protocol Secure. Este protocolo se usa principalmente para transmitir datos HTML a través de Internet. Git está configurado para compartir información con HTTPS.

git clone https:// <repo>

bash
git clone https://example.com/gitproject.git

Una de las ventajas de HTTPS es la simplicidad de configuración. Tampoco requiere muchos recursos en el servidor. Cifra la transferencia de contenido. Los cortafuegos corporativos están configurados para permitir el tráfico a través del puerto, lo que convierte a HTTPS en uno de los protocolos de uso común.

La principal desventaja es una sobrecarga ligeramente mayor debido al cifrado, lo que puede hacer que clonar o obtener del repositorio sea un poco más lento en comparación con el protocolo Git.

  1. Local

    Local es un protocolo básico en el que el repositorio remoto está en otro directorio del disco. Se usa cuando todos los miembros del equipo tienen acceso a un sistema de archivos compartido. El sistema de archivos compartido te permite clonar, hacer push y hacer pull desde un repositorio local. La ruta al repositorio puede usarse como la URL para clonar un repositorio así en un proyecto existente.

git clone <local_path>

bash
git clone /opt/git/project.git

Práctica

What is the primary purpose of the 'git clone' command in Git?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.