Por Anónimo (no verificado) , 29 Abril 2026

Introducción

git clone copia un repositorio remoto a tu máquina. Crea un nuevo directorio, inicializa .git dentro de él, descarga todos los objetos y refs, configura un remoto llamado origin y hace checkout del branch predeterminado. Después de clonar tienes un repositorio completo e independiente.

Clone básico

git clone https://github.com/torvalds/linux.git
cd linux
git remote -v
# origin  https://github.com/torvalds/linux.git (fetch)
# origin  https://github.com/torvalds/linux.git (push)

Eligiendo un nombre de directorio

Por defecto Git usa el último componente de la ruta. Sobrescríbelo:

git clone https://github.com/example/widget.git my-widget

Eligiendo un protocolo

  • HTTPS: el más fácil, funciona a través de firewalls, a menudo necesita un asistente de credenciales o token.
  • SSH: conveniente con autenticación por clave, rápido para usuarios avanzados.
  • git://: anónimo, no autenticado, mayormente histórico.
  • file:// o ruta local: clonar desde otro directorio.
git clone [email protected]:example/widget.git
git clone /srv/git/widget.git
git clone file:///srv/git/widget.git

Opciones útiles

git clone --depth 1 <url>            # shallow: solo la punta
git clone --branch v1.2.3 <url>     # checkout de un branch o tag específico
git clone --single-branch <url>     # descargar solo un branch
git clone --bare <url>              # clon bare, sin árbol de trabajo
git clone --recurse-submodules <url>

Los clones shallow ahorran ancho de banda en CI; conviértelos después con git fetch --unshallow.

Qué hace clone, paso a paso

  1. Crea el directorio destino.
  2. Ejecuta git init dentro de él.
  3. Añade origin como remoto.
  4. Ejecuta git fetch origin.
  5. Configura el seguimiento del branch predeterminado.
  6. Ejecuta git checkout para ese branch.

Clones sparse y partial para repos enormes

Los repositorios que abarcan gigabytes (sistemas operativos, monorepos) son dolorosos de clonar completamente. Dos características complementarias ayudan:

git clone --filter=blob:none --no-checkout <url> repo
cd repo
git sparse-checkout init --cone
git sparse-checkout set src/myteam
git checkout main

--filter=blob:none aplaza descargas de blobs hasta que se necesiten, mientras que sparse-checkout popula solo los directorios que listas. Juntos te permiten trabajar en una pequeña porción de un repo masivo con costo proporcional de disco y ancho de banda.

Hooks en tiempo de clone

Algunos proyectos incluyen pasos de configuración que deberían ejecutarse al clonar (instalar hooks pre-commit, descargar objetos LFS, inicializar submódulos). Git no ejecuta hooks al clonar, pero puedes encadenarlos:

git clone --recurse-submodules <url> repo
cd repo
git lfs install
pre-commit install

Para nuevos contribuyentes, documenta esta secuencia en CONTRIBUTING.md o envuélvela en un script scripts/bootstrap. Los proyectos inteligentes hacen su objetivo make setup idempotente para que volver a ejecutarlo tras un clone obsoleto sea seguro.

Errores comunes

Clonar en un directorio no vacío: Git se rehúsa a menos que pases un destino vacío explícito. Clonar repositorios enormes sin --depth en conexiones lentas, y luego rendirse a la mitad. Clonar por HTTPS a un servidor que requiere SSO, y luego no poder hacer push porque tu token carece del scope correcto. Siempre prueba con git push --dry-run después del primer commit. Finalmente, clonar en ~/Desktop u otra carpeta de sincronización (Dropbox, iCloud, OneDrive) lleva a corrupción cuando el cliente de sincronización escribe a medio camino sobre .git/index. Mantén los clones de trabajo en almacenamiento local plano.