1. el_pichon,
Hola a todos.
A raíz de una pull request que hizo @jamesPotter en el repositorio de EVM, he pensado que sería una buena idea redactar una serie de posts hablando de Git, GitHub y herramientas relacionadas para entenderlo un poco mejor. Aclaro que en este hilo no vamos a hablar nada de programación, y tampoco es apto para la gente que tiene prisa. Iré editando este primer mensaje para indicar en qué otros mensajes del hilo se van desarrollando los demás capítulos de esta nueva aventura. Vuestros comentarios me servirán para crear una colección de documentos que quiero publicar en la web de NVDA en español. ¿Preparados? ¿Listos? ¡Vamos!
Índice
Instalación y configuración inicial de Git: post 1.
Creación del primer repositorio: post 12.
Navegación por el historial y los commits, uso de tags y limpieza de un repositorio: post 26.
Ramas, rebase y merge: post 32.
Resolución de conflictos: post 34.
Introducción a GitHub y clonación de un repositorio: post 44.
Creación de cuenta en GitHub y primer repositorio: post 60.
Configuración de perfil e introducción a las incidencias: post 75.
Gestión de orígenes remotos y creación de pull requests: post 77.
Releases y archivos .gitignore: post 79.
¿Qué es Git?
Git es un sistema de control de versiones distribuido que permite gestionar todo tipo de proyectos. Probablemente la definición de control de versiones no te resulte familiar, así que deberíamos empezar por ahí.
Imagina que tienes un archivo en tu disco duro. Por ejemplo, podríamos estar hablando de un documento, una canción o un vídeo que tú mismo has hecho. Imagina que, junto a ese archivo, se almacenan todos los cambios por los que ha ido pasando desde que nació, con una descripción de lo que se hizo en cada cambio, y que además puedes hacer que el archivo "retroceda en el tiempo" y se quede como estaba antes de un cambio en concreto. ¿Te suena esto de Microsoft Word o Dropbox? Pongamos algunos ejemplos de cambios:
- 25/06/2017: modificado el apartado de introducción para corregir un error ortográfico.
- 30/06/2018: ahora las voces vuelven a oírse por encima de la música.
Git permite gestionar no sólo un archivo, sino carpetas enteras con ficheros que se añaden y se eliminan. Normalmente se usa para desarrollar software, pero tiene otras muchas aplicaciones prácticas. Para ello, utiliza repositorios. Solemos emplear un repositorio por proyecto. Un repositorio es una carpeta especial donde se almacenan los archivos del proyecto, pero también todas sus versiones y cambios. Se dice que Git es distribuido porque no necesita conectarse a ningún servidor para trabajar, a pesar de que puede hacerlo. De hecho, para dar los primeros pasos con él, vamos a trabajar con repositorios locales sin enviar el resultado a ningún sitio. Por otra parte, a pesar de que puede manejarse con pequeños archivos binarios, Git está pensado para trabajar con texto plano. El código fuente de un programa está formado por ficheros de texto plano (por ejemplo, los que se escriben con el bloc de notas), y pequeños recursos adicionales, como sonidos o imágenes.
A continuación, aprenderemos cómo se instala Git en Windows y cómo dejarlo listo para empezar a trabajar.
Instalación de Git for Windows.
Para instalar Git en Windows, lo primero que haremos será visitar su página de descargas. Al entrar, se activará la descarga más adecuada para nuestro sistema, que en la mayoría de casos suele ser la versión más reciente para 64 bits. El instalador se parece mucho al de otros programas, pero debemos prestar atención a algunas de sus pantallas si queremos que nuestra experiencia a ciegas con él sea óptima. Estas son las pantallas por las que pasaremos:
- Licencia. Si aparece una casilla llamada "Only show new options", la dejamos desmarcada y nos limitamos a pulsar Next.
- Selección de componentes. Puede ser buena idea crear un icono en el escritorio (on the desktop), añadir la extensión de Git Bash al menú contextual (Git Bash here) y hacer que el programa busque actualizaciones a diario (Check daily for Git for Windows updates). Podemos marcar estas casillas, y todas las que queramos, y pulsar Next.
- Selección de editor. Es recomendable emplear un editor de consola, como Nano o Vim, ya que nos va a ahorrar ventanas innecesarias. Nano puede ser más cómodo para los principiantes (y no tan principiantes). Podemos elegir el editor en el cuadro combinado, y pulsar Next.
- Selección de nombre de rama predeterminada. Si dejamos que Git decida (let Git decide), el nombre será master. Es el que se usará a lo largo de estos tutoriales. La posibilidad de cambiarlo viene por motivos políticos y reclamaciones de ciertos colectivos cuya sensibilidad es herida por la palabra master.
- ¿Desde dónde se usará Git? "Use Git from Git bash only" es la opción menos invasiva, ya que no modifica variables de entorno del sistema. Sin embargo, sólo podremos usar Git desde la consola Git Bash. Las otras dos opciones permiten usar Git desde la consola cmd (Git from the command line and also from 3rd-party software), o Git y las herramientas que lo acompañan desde la consola cmd (Use Git and optional Unix tools from the Command Prompt, no recomendada).
- Selección de biblioteca SSL. Seleccionamos "Use the native Windows Secure Channel library" y seguimos adelante.
- Tratamiento de saltos de línea en los commits. Más adelante veremos qué son los commits. Recomendable elegir la opción "Checkout as-is, commit as-is", ya que siempre los dejará sin modificar.
- Selección de programa de consola. Aunque MinTTY ya es accesible con NVDA, ninguna consola se comportará mejor que la nativa del sistema, así que elegiremos "Use Windows' default console window".
- Comportamiento predeterminado de git pull. Más adelante explicaremos qué hace este comando. De momento, lo ideal es elegir el valor "Default (fast-forward or merge)".
- Ayudante de credenciales. En principio no nos hará falta, así que elegiremos None (ninguno).
- Opciones extra. Se recomienda dejar los valores por defecto.
- Opciones experimentales. Se recomienda dejar los valores por defecto.
- Confirmación de instalación. Al pulsar el botón Install en esta pantalla, Git se instalará en nuestro sistema con las opciones elegidas.
- Pantalla de finalización. Contiene casillas para ver las notas de la versión y abrir Git Bash. Podemos desmarcar todas y pulsar Finish.
¡Conseguido! Ya tenemos Git instalado en nuestro sistema. El siguiente paso es configurar nuestra identidad y claves GPG y SSH, que nos vendrán muy bien en el futuro.
Configuración de identidad y algunos parámetros extra
Cuando trabajemos con repositorios, normalmente lo haremos en equipo. Es muy útil saber quién ha hecho cada cambio, especialmente si las cosas no van bien. En esta sección vamos a utilizar la consola Git Bash para ejecutar comandos. Como son algo complicados al principio, puede ser una buena idea copiarlos y pegarlos. Para ello, primero debemos preparar nuestra consola:
- Abre el símbolo del sistema (pulsa windows+r, escribe cmd y pulsa intro).
- Pulsa alt+espacio para abrir el menú Sistema, y activa la opción propiedades.
- Busca la casilla de verificación "Usar Ctrl+Mayús+C o V como Copiar o pegar", y márcala. Pulsa intro para guardar los cambios.
- Escribe el comando exit y pulsa intro para salir de la consola.
A partir de ahora, si control+v no pega un comando que hayas copiado al portapapeles, puedes pulsar control+shift+v. Hecho esto, nos olvidamos de cmd y abrimos Git bash, que debería estar en el escritorio. Allí, escribimos los siguientes comandos, reemplazando el texto entre comillas según corresponda:
Configuramos nuestro nombre, se recomienda que sea nombre real con apellidos y acentos donde corresponda: git config --global user.name "nombre y apellidos"
Y ahora, nuestra dirección de correo: git config --global user.email "ejemplo@correo.com"
Generación de un par de claves SSH y GPG
Estas claves son muy importantes de cara a la seguridad, ya que permiten certificar nuestra identidad y conectarnos fácilmente a sitios externos. Aunque se suelen generar en etapas más avanzadas de aprendizaje, aquí se ha optado por tenerlas en cuenta desde el primer momento. Vamos a generar dos pares de claves públicas-privadas. La parte privada estará cifrada y nunca saldrá de nuestro ordenador, y la parte pública la podremos compartir con los demás.
El siguiente comando genera una clave ssh. Debemos sustituir la parte entre comillas por nuestro correo: ssh-keygen -t ed25519 -C "correo@ejemplo.com"
El generador es interactivo, y nos hará un par de preguntas. En la primera pide la ruta del archivo donde se almacenará la clave. Pulsamos intro sin escribir nada.
A continuación nos solicitará una "passphrase" para cifrar la clave privada. Se puede dejar vacía, aunque lo ideal es escribir una contraseña suficientemente segura. Hay que escribirla dos veces para confirmarla. Al teclearla en la consola, el lector de pantalla no dirá nada y los caracteres no aparecerán escritos en pantalla.
Ya tenemos la clave ssh generada. Ahora vamos con la clave gpg. Al ejecutar el siguiente comando, también se activará una aplicación interactiva que nos hará preguntas: gpg --full-generate-key
Pulsamos intro en la primera pregunta para aceptar el tipo de clave por defecto.
La segunda pregunta está relacionada con la longitud de la clave. En vez de dejar los 3072 bits que se nos ofrecen, escribimos 4096 y pulsamos intro. Esto vendrá bien para GitHub de cara al futuro, ya que sólo admite de 4096 en adelante.
En la tercera pregunta, el programa querrá saber cuándo caduca la clave. Pulsamos intro sin escribir nada para que no caduque nunca.
Lo siguiente que debemos hacer es comprobar que los datos son correctos y pulsar la y e intro para confirmar.
A continuación, introduciremos nuestra información de usuario. El programa nos pedirá nuestro nombre, dirección de correo y un comentario que se puede dejar vacío. Los datos deben ser los mismos que introdujimos previamente con git config. Al acabar, pulsamos la letra O para indicar que todos los valores son correctos, e intro para continuar.
Finalmente, aparecerá un diálogo independiente para solicitarnos una passphrase o contraseña con la que se cifrará la parte privada. A diferencia de ssh, donde esto se hacía en consola, aquí estamos en un diálogo estándar de Windows. Tras escribir la contraseña y confirmarla en la segunda ventana que aparece, habremos terminado la generación de claves.
Para acabar este capítulo, asociaremos nuestra clave gpg recién creada a Git. De esa forma, cuando agreguemos cambios al repositorio, podremos firmar dichos cambios y garantizar que nadie suplanta nuestra identidad.
En primer lugar, listamos las claves existentes. Tenemos que hacerlo para extraer un identificador: gpg --list-secret-keys --keyid-format=long
Podemos usar las órdenes del cursor de revisión de NVDA para seleccionar y copiar el texto, o lo que es más fácil al principio: ejecutar el mismo comando y guardar el resultado en un fichero de texto. Por ejemplo: gpg --list-secret-keys --keyid-format=long > resultado.txt
El fichero resultado.txt estará en nuestra carpeta de usuario. En él veremos algo como esto:
/Users/hubot/.gnupg/secring.gpg
sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid Hubot
ssb 4096R/42B317FD4BA89E7A 2016-03-10
4
El identificador de la clave que nos interesa está inmediatamente debajo de la línea de guiones, justo después de sec 4096R, tras la barra y antes de la fecha de generación. Debemos copiarlo y ejecutar dos comandos más con él.
Primero, indicamos a Git qué clave usar cuando haga firmas (reemplaza este identificador de ejemplo por el tuyo): git config --global user.signingkey 3AA5C34371567BD2
Después, le decimos que firme siempre, aunque no se lo pidamos de forma explícita: git config --global commit.gpgsign true
Actualización de Git for Windows
Git es un proyecto que se encuentra en constante evolución, y siempre viene bien mantenerlo actualizado para sacar partido a los cambios más recientes.
Desde la consola, se puede ejecutar el siguiente comando para buscar actualizaciones: git update-git-for-windows
Si hay una actualización disponible, se nos preguntará si queremos instalarla. En este caso, basta con pulsar la y, después intro, y aceptar las advertencias del control de cuentas de usuario. Todo lo demás se hace automáticamente.
Si has llegado hasta aquí, ya tienes Git configurado para trabajar con repositorios, y además hacerlo de forma segura reduciendo al mínimo las posibilidades de que alguien suplante tu identidad. En el próximo capítulo, aprenderemos a crear nuestro primer repositorio y grabar cambios en él.
¡Hasta pronto!
Skor: +3
Poslednja izmena od strane el_pichon, 11 Jul 2021 00:09:23