comando git clone: configuración github ssh, opciones --branch, --depth
Este artículo cubrirá cómo usar el comando git clone
. Te daré una rápida visión general de la clonación a través de ssh, la opción --branch
, y la opción --depth
.
1. Cómo usar git clone
El comando git clone
copia todo el contenido de un repositorio remoto a tu entorno local. Podemos confirmar nuevos cambios en el repositorio clonado, o realizar otras operaciones en él, y luego enviarlo de nuevo al repositorio remoto.
La clonación se realiza normalmente en Github o en un servicio de alojamiento de Git como Gitlab o Bitbucket. Es fácil de usar. Toma la dirección de tu repositorio remoto y escribe el siguiente comando.
Como se explica en el post git remote, Git soporta una variedad de protocolos de comunicación. Tomemos como ejemplo el más popular, el protocolo HTTP(S).
$ git clone https://github.com/user/repo.git
También notarás que la dirección del repositorio remoto termina en .git
, como se menciona en el post git init cuando se explica la opción --bare
.
Ejecutando el comando se creará una carpeta con el mismo nombre que el repositorio en el directorio actual y se descargarán en ella los archivos pertenecientes al repositorio. Aquí está el resultado de ejecutar el comando git clone
en la dirección del repositorio de Github con el mayor número de estrellas del mundo.
Puedes ver que todo lo que hay en el repositorio se ha copiado al directorio
free-programming-books
, que es el nombre del repositorio remoto. Si quieres ponerlo en un directorio con un nombre diferente, puedes escribir la dirección seguida del nombre del directorio deseado así
$ git clone https://github.com/user/repo.git directory-name
2. clonar usando ssh
SSH es un protocolo de comunicación que proporciona encriptación usando un par de claves pública/privada. Se usa principalmente para conectarse a hosts remotos, y cuando se usa con Git se beneficia de una autenticación más sencilla y tiempos de respuesta más rápidos que https.
Ver este post para una lista de protocolos de comunicación soportados por Git.
Sin embargo, a diferencia del protocolo HTTPS, que puede utilizarse sin necesidad de configuración, SSH requiere cierta configuración inicial. No es difícil, así que vamos a ver paso a paso cómo utilizar ssh en Github.
2.1. Generar una nueva clave SSH
En primer lugar, tenemos que generar una nueva clave SSH, pero antes de hacer eso, vamos a ver si ya existe una. Comprueba el directorio ~/.ssh
así.
$ ls -al ~/.ssh
Tres de los archivos de salida están disponibles en Github: id_rsa.pub
, id_ecdsa.pub
y id_ed26619.pub
. Si no existen, crea un nuevo archivo de claves con el siguiente comando.
$ ssh-keygen -t ed25519 -C "Github email"
El resultado de ejecutar esto será
Después de escribir el comando, aparecerán tres mensajes.
La primera pregunta dónde guardar el archivo, si pulsas enter sin escribir se guardará en la ubicación por defecto. La siguiente es una solicitud para introducir una frase de contraseña para ssh, que es una contraseña para asegurarse de que si alguien pone sus manos en su archivo de clave ssh, no pueden hacer lo que quieran con él. Escríbela de nuevo en la siguiente ventana.
2.2. Registrando tu clave ssh con tu cuenta de Github
Necesitarás registrar la clave pública ssh que creaste con Github. Después de iniciar sesión en Github, haz clic en tu perfil en la esquina superior derecha para abrir el menú. Haz doble clic en Configuración.
Menú Github
En la pantalla de Configuración, vaya a las claves SSH y GPG en el menú Acceso.
Menú Añadir clave SSH
Haga clic en el botón Nueva clave SSH para mostrar la pantalla de registro. El contenido del archivo de clave ssh se puede copiar en el portapapeles con el siguiente comando.
$ pbcopy < ~/.ssh/id_ed25519.pub
Si no has utilizado el algoritmo ED25519, sustitúyelo por el nombre de archivo apropiado. A continuación, pegue la clave que ha copiado del portapapeles en la sección Clave de abajo y haga clic en el botón verde para registrar la nueva clave ssh. En este punto, se le pedirá que inicie sesión de nuevo para confirmar su cuenta.
Registrar clave ssh](/images/git/clone/5.webp)
Una vez completado el registro, ejecuta el siguiente comando para verificar que se ha registrado correctamente.
$ ssh -T git@github.com
En este punto, basándose en el algoritmo de mi archivo de claves SSH, comprobará si la huella digital coincide e intentará conectarse. La huella digital se puede encontrar en GitHub's SSH key fingerprint page (opens in a new tab).
Después de verificar la huella digital, introduje yes y la frase de contraseña y pude conectarme normalmente.
`2.3. git clone con ssh
Ahora la configuración inicial está hecha. Introduce el comando git clone
y la dirección ssh del repositorio remoto para proceder con el clonado, como se muestra a continuación.
$ git clone git@github.com:<username>/<remote-repo-name>
Aquí está el resultado de la ejecución
También hay formas de evitar introducir la frase de contraseña cada vez. Cubriremos esto en otro post.
3. Clonando una rama específica usando la opción --branch
Por defecto, el comando git clone
clonará la rama por defecto del repositorio remoto, normalmente la rama master
o main
.
Si quieres clonar otra rama, hay dos formas de hacerlo: tirar de la otra rama después de que la rama principal haya sido clonada, o usar la opción --branch
del comando clone.
Debería usar el primer método si necesita acceder a más de una rama desde un repositorio remoto. Esto se debe a que la clonación con la opción --branch
no le permitirá acceder a la otra rama.
He aquí cómo usarlo
$ git clone --branch <branch-name> <repo-address>
Probémoslo en acción
De esta forma podemos clonar sólo las ramas que queramos.
4. Clona sólo el historial que quieras con la opción --depth
A medida que tu proyecto crece, también lo hace la cantidad de datos almacenados en tu repositorio Git. El historial de commits también será bastante largo, y en algunos casos puede ser ineficiente obtener todos los datos desde el principio de ese repositorio hasta el presente.
La opción --depth
es para estos casos. Con esta opción podemos especificar el número de commits a copiar a nuestro entorno local, basándonos en el último commit.
Por ejemplo, si especificamos sólo 1 depth, sólo obtendremos los datos de la última confirmación.
El comando tiene el siguiente aspecto
$ git clone --depth <depth> <repo-address>
Veamos los resultados de la ejecución real
Como puedes ver, dado que clonamos con la opción depth activada, sólo se muestra la última confirmación en el comando git log
.
5. Conclusión
El comando git clone
es un comando esencial para acceder no sólo a tus propios proyectos, sino también a muchos otros repositorios.
Espero que este post te haya ayudado a entender y utilizar mejor el comando git clone
.
