git clone
Aprende sobre el comando Git clone, su uso, las opciones de configuración más comunes y las URLs de Git.
Qué hace git clone
El comando git clone copia un repositorio existente en un nuevo directorio de tu máquina. En un solo paso:
- Crea el directorio de destino e inicializa un nuevo repositorio local dentro de él (no necesitas ejecutar git init primero).
- Descarga el historial completo del proyecto: cada commit, rama y etiqueta.
- Añade el repositorio fuente como un remoto llamado
origin. - Crea una rama de seguimiento remoto para cada rama del remoto y realiza el checkout de la rama predeterminada (normalmente
mainomaster) en tu directorio de trabajo.
Así es como casi todos los desarrolladores obtienen una copia de trabajo de un proyecto compartido, por lo que git clone suele ser el primer comando de Git que ejecutas en un proyecto nuevo.

Uso básico
La forma general del comando recibe una URL de repositorio y, opcionalmente, un nombre de directorio:
git clone <repo> [<directory>]Por ejemplo, clonar un proyecto por SSH desde un servidor accesible en example.com con el nombre de usuario x_person:
git clone ssh://[email protected]/path/to/team-project.git
cd team-project
# Start editing files, committing snapshots, and pushing to the remoteEsto inicializa un nuevo repositorio en la carpeta team-project y lo llena con el contenido del repositorio central. Después de clonar, puedes hacer cd al proyecto y comenzar a modificar archivos, hacer commits de instantáneas e interactuar con el remoto.
Clonar en una carpeta específica
Por defecto, Git nombra el nuevo directorio con el nombre del repositorio. Para clonar en una carpeta de tu elección, añade un argumento <directory>:
git clone https://example.com/team-project.git my-project
cd my-projectEsto clona el repositorio en my-project en lugar de team-project.
Clonar una sola rama o etiqueta
Pasa --branch (forma corta: -b) con un nombre de rama o etiqueta para hacer checkout de algo distinto a la rama predeterminada del remoto:
# Check out the develop branch instead of the default
git clone --branch develop https://example.com/team-project.git
# Check out the state at tag v1.0 (results in a detached HEAD)
git clone --branch v1.0 https://example.com/team-project.gitCuando pasas una etiqueta, el árbol de trabajo hace checkout en esa etiqueta en un estado de HEAD desvinculado, ya que una etiqueta no es una rama en la que puedas hacer commits.
Opciones útiles de clone
Estas opciones te permiten personalizar qué descarga git clone y cómo se comporta el nuevo repositorio.
--depth (clone superficial)
--depth <n> crea un clon superficial que conserva solo los últimos <n> commits en lugar de todo el historial. Esto es mucho más rápido para repositorios grandes y es habitual en pipelines de CI donde no se necesita el historial completo.
git clone --depth 1 https://example.com/team-project.git--single-branch
--single-branch descarga el historial de una sola rama (la rama predeterminada, o la indicada con --branch) en lugar de todas las ramas. Está implícito en --depth.
git clone --single-branch --branch main https://example.com/team-project.git--recurse-submodules
Si el proyecto usa submódulos, --recurse-submodules los clona y hace checkout en el mismo paso, para que no tengas que ejecutar git submodule update --init después.
git clone --recurse-submodules https://example.com/team-project.git-o (renombrar el remoto)
Por defecto, la fuente se añade como el remoto origin. Usa -o <name> para elegir un nombre diferente. Consulta git remote para gestionar remotos después.
git clone -o upstream https://example.com/team-project.git--bare y --mirror
--barecrea una copia del repositorio sin directorio de trabajo. El repositorio resultante contiene el historial del proyecto y permite hacer push o pull, pero no tiene archivos desprotegidos para editar. Este es el formato utilizado por los repositorios que viven en un servidor.--mirrorimplica--barepero va más lejos: copia todas las refs (ramas, etiquetas, notas, refs de seguimiento remoto) y configura el remoto para que el espejo sea un reflejo exacto de la fuente. Se utiliza principalmente para mover o hacer copia de seguridad de un repositorio.
git clone --bare https://example.com/team-project.git
git clone --mirror https://example.com/team-project.gitDiferencia entre git init y git clone
git init y git clone se confunden con frecuencia. La distinción clave:
git initcrea un repositorio local completamente nuevo y vacío: no hay remoto ni historial aún.git clonecopia un repositorio remoto existente a tu máquina, trayendo su historial completo y configurandooriginautomáticamente.
git clone no requiere que ejecutes git init primero; inicializa el repositorio local y configura las ramas de seguimiento remoto por ti.
URLs de Git
Git tiene su propia sintaxis de URL para indicar a los comandos dónde vive un repositorio remoto. Dado que git clone casi siempre apunta a un remoto, entender estas URLs es importante. Git soporta cuatro familias de protocolos: Git, SSH, HTTPS y Local. Todos ellos excepto HTTPS requieren que Git esté instalado y en funcionamiento en el servidor.
Protocolo Git
El protocolo Git es exclusivo de Git. Lo sirve un demonio que escucha en el puerto 9418 y ofrece acceso anónimo de solo lectura similar a SSH pero sin ninguna autenticación.
git clone git://host.xz/path/to/repo.gitSu ventaja es la transferencia rápida. Sus inconvenientes son la falta de autenticación (por lo que rara vez se usa para escrituras) y una configuración de servidor más compleja.
Protocolo SSH
Secure Shell (SSH) es un protocolo de red para iniciar sesión de forma segura de un ordenador a otro. Es el protocolo más común para el acceso autenticado de lectura/escritura, y el acceso SSH está configurado por defecto en la mayoría de las plataformas de alojamiento. Debes establecer credenciales (una clave SSH) con el servidor antes de conectarte.
git clone ssh://user@server/project.git
# Many hosts also accept the shorter "scp-like" form:
git clone user@server:project.gitSSH cifra y autentica todo el tráfico, comprime los datos antes de la transferencia y es fácil de configurar. Su principal limitación es que no admite acceso anónimo. Consulta nuestra sección de clave SSH para configurar claves.
Protocolo HTTPS
HTTPS (HyperText Transfer Protocol Secure) es el protocolo utilizado para transmitir datos de forma segura por la web, y Git puede compartir repositorios a través de él.
git clone https://example.com/gitproject.gitHTTPS es sencillo de configurar, cifra la transferencia y atraviesa fácilmente los cortafuegos corporativos (el puerto 443 casi siempre está abierto), lo que lo convierte en uno de los protocolos más utilizados. Su principal inconveniente es una sobrecarga ligeramente mayor por el cifrado, lo que puede hacer que la clonación sea marginalmente más lenta que el protocolo Git nativo.
Protocolo Local
Con el protocolo Local, el repositorio "remoto" es simplemente otro directorio en el mismo disco o en un sistema de archivos compartido. Cuando los miembros del equipo comparten un sistema de archivos, pueden clonar, hacer push y pull mediante rutas simples.
git clone /opt/git/project.git
# Or with an explicit file:// URL:
git clone file:///opt/git/project.gitComandos relacionados
Después de clonar, estos capítulos cubren el flujo de trabajo habitual:
- git fetch y git pull — descarga e integra actualizaciones del remoto.
- git branch y git checkout — crea y cambia entre ramas.
- git remote — visualiza y gestiona el remoto
originque configurógit clone.