aquí examinaremos el comando git clone
en profundidad. git clone
es una utilidad de línea de comandos de Git que se utiliza para apuntar a un repositorio existente y crear un clon o copia del repositorio de destino. En esta página discutiremos las opciones de configuración extendidas y los casos de uso comunes de git clone
., Algunos puntos que cubriremos aquí son:
- clonación de un repositorio local o remoto
- clonación de un repositorio Desnudo
- usando opciones poco profundas para clonar parcialmente repositorios
- sintaxis de URL de Git y Protocolos compatibles
en la guía de configuración de un repositorio, cubrimos un caso de uso básico de git clone
. Esta página explorará escenarios de clonación y configuración más complejos.,
propósito: copia de desarrollo de colaboración repo-to-repo
si un proyecto ya se ha configurado en un repositorio central, el comando git clone
es la forma más común para que los usuarios obtengan una copia de desarrollo. Al igual que git init
, la clonación es generalmente una operación de una sola vez. Una vez que un desarrollador ha obtenido una copia de trabajo, todas las operaciones de control de versiones y colaboraciones se gestionan a través de su repositorio local.,
colaboración Repo-to-repo
es importante entender que la idea de Git de una «copia de trabajo» es muy diferente de la copia de trabajo que se obtiene al consultar el código de un repositorio SVN. A diferencia de SVN, Git no hace distinción entre la copia de trabajo y el repositorio central, Todos son repositorios Git completos.
Esto hace que colaborar con Git sea fundamentalmente diferente 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 repositorio a repositorio., En lugar de revisar una copia de trabajo en el repositorio central de SVN, envías o extraes confirmaciones de un repositorio a otro.
Por supuesto, no hay nada que te impida dar a ciertos repositorios Git un significado especial. Por ejemplo, simplemente designando un repositorio Git como el repositorio «central», es posible replicar un flujo de trabajo centralizado usando Git. El punto es, esto se logra a través de convenciones en lugar de ser cableado en el propio VCS.,
Usage
git clone
se usa principalmente para apuntar a un repositorio existente y hacer un clon o copia de ese repositorio en un nuevo directorio, en otra ubicación. El repositorio original puede estar ubicado en el sistema de archivos local o en protocolos soportados accesibles a máquinas remotas. El comando git clone
copia un repositorio Git existente. Esto es algo así como SVN checkout, excepto que la «copia de trabajo» es un repositorio Git completo: tiene su propio historial, administra sus propios archivos y es un entorno completamente aislado del repositorio original.,
como conveniencia, la clonación crea automáticamente una conexión remota llamada «origen» que apunta al repositorio original. Esto hace que sea muy fácil interactuar con un repositorio central. Esta conexión automática se establece creando git refs a los cabezales de rama remota bajo refs/remotes/origin
e inicializando variables de configuración remote.origin.url
y remote.origin.fetch
.
un ejemplo que demuestra el uso de git clone
se puede encontrar en la guía de configuración de un repositorio., El siguiente ejemplo muestra cómo obtener una copia local de un repositorio central almacenado en un servidor accesible en example.com
usando el nombre de usuario SSH john:
git clone ssh://[email protected]/path/to/my-project.git
cd my-project
# Start working on the project
el primer comando inicializa un nuevo repositorio Git en la carpeta my-project
máquina y la rellena con el contenido del repositorio central. Luego, puede ingresar al proyecto y comenzar a editar archivos, confirmar instantáneas e interactuar con otros repositorios., También tenga en cuenta que la extensión .git
se omite del repositorio clonado. Esto refleja el estado no desnudo de la copia local.
la Clonación a una carpeta específica
git clone <repo> <directory>
Clonar el repositorio que se encuentra en <repo>
en la carpeta que se llama ~<directory>!
en el equipo local.
clonar una etiqueta específica
git clone --branch <tag> <repo>
clonar el repositorio ubicado en <repo>
y solo clonar la referencia para <tag>
.,
shallow clone
git clone -depth=1 <repo>
clona el repositorio ubicado en<repo>
y solo clona el historial
de confirmaciones especificado por la opción depth=1. En este ejemplo se realiza un clon de <repo>
y solo se incluye la confirmación más reciente en el nuevo repositorio clonado. La clonación superficial es más útil cuando se trabaja con repositorios que tienen un extenso historial de confirmaciones. Un extenso historial de confirmaciones puede causar problemas de escalado, como límites de uso de espacio en disco y largos tiempos de espera al clonar., Un clon superficial puede ayudar a aliviar estos problemas de escalado.
opciones de configuración
git clone-branch
el argumento -branch
le permite especificar una rama específica para clonar en lugar de la rama a la que apunta el remoto HEAD
, generalmente la rama maestra. Además, puede pasar una etiqueta en lugar de una rama para el mismo efecto.
git clone -branch new_feature git://remoterepository.git
Este ejemplo de arriba sería clonar sólo el new_feature
rama del repositorio Git remoto., Esto es puramente una utilidad convence para ahorrarle tiempo de descargar laHEAD
ref del repositorio y luego tener que obtener adicionalmente la ref que necesita.
git clone -espejo frente git clone -desnudo
git clone –desnudas
Similar a git init --bare,
cuando -bare
argumento se pasa a git clone,
una copia del repositorio remoto se realizará con omitido directorio de trabajo., Esto significa que se configurará un repositorio con el historial del proyecto que se puede empujar y extraer, pero no se puede editar directamente. Además, no se configurarán ramas remotas para el repositorio con el repositorio -bare
. Like git init --bare,
esto se usa para crear un repositorio alojado que los desarrolladores no editarán directamente.
git clone mirror mirror
pasando el argumento --mirror
pasa implícitamente el argumento --bare
también., Esto significa que el comportamiento de --bare
es heredado por --mirror
. Lo que resulta en un repositorio desnudo sin Archivos de trabajo editables. Además, --mirror
clonará todas las referencias extendidas del repositorio remoto y mantendrá la configuración de seguimiento de rama remota. A continuación, puede ejecutar git remote
update en el mirror y sobrescribirá todas las referencias del repositorio de origen. Dándole la funcionalidad exacta ‘reflejada’.,
otras opciones de configuración
para obtener una lista completa de otras opciones de clonación de git, visite la documentación oficial de Git. En este documento, tocaremos algunas otras opciones comunes.
git clone template template
git clone --template=<template_directory> <repo location>
clona el repositorio en <repo location>
y aplica la plantilla desde <template directory>
a la rama local recién creada. Se puede encontrar una revisión completa de las plantillas de Git en nuestra página git init
.,
URL de Git
Git tiene su propia sintaxis de URL que se utiliza para pasar ubicaciones de repositorios remotos a los comandos de Git. Debido a que git clone
se usa más comúnmente en repositorios remotos, examinaremos la sintaxis de la URL de Git aquí.
git URL protocols
– SSH
Secure Shell (SSH) es un protocolo de red autenticado ubicuo que se configura comúnmente de forma predeterminada en la mayoría de los servidores. Dado que SSH es un protocolo autenticado, deberá establecer credenciales con el servidor de alojamiento antes de conectarse., ssh://host.xz/path/to/repo.git/
– GIT
– HTTP
protocolo de transferencia de hipertexto. El protocolo de la web, más comúnmente utilizado para transferir datos HTML de páginas web a través de Internet. Git se puede configurar para comunicarse a través de HTTP
Summary
en este documento echamos un vistazo a git clone
. Las conclusiones más importantes son:
git clone
se utiliza para crear una copia de un repositorio de destino
2. El repositorio de destino puede ser local o remoto
3. Git admite algunos protocolos de red para conectarse a repositorios remotos
4., Hay muchas opciones de configuración disponibles que cambian el contenido del clon