- Documentación
Git y GitHub
Para este curso necesitaremos que utilicen git
, un sistema de control de versiones distribuido. Los sistemas de control de versiones son las mejores herramientas para compartir y almacenar código a comparación de mandar correos con archivos adjuntos, utilizar memorias flash, o incluso compartir documentos mediante DropBox o Google Docs.
Cuenta de GitHub
Vamos a estar utilizando GitHub para tener repositorios privados en donde van a almacenar su código de forma remota. Si la oración anterior no les dijo nada, no se preocupen, vamos a guiarlos en el proceso más adelante. Pero primero, necesitan crear una cuenta de GitHub.
¿Por qué GitHub? GitHub ahora permite a todas las cuentas gratuitas tener repositorios privados ilimitados con algunas limitaciones que no van a ser ningún problema para este curso.
Registrarse en GitHub
Naveguen a la siguiente página: github.com. Si no tienen una cuenta de GitHub todavía, creen una en el siguiente link.
Configurando git
Ahora que ya han creado su cuenta de GitHub, vamos a configurar git
para que sepa quiénes son. Abran una terminal Ctrl+Alt+T
y ejecuten los siguientes comandos listados abajo, reemplazando NOMBRE
con su nombre y apellido (entre comillas) y CORREO
con la dirección de correo que utilizarón para registrarse en GitHub.
git config --global user.name "NOMBRE"
git config --global user.email "CORREO"
Ahora vamos a configurar git
para que sepa que editor de texto vamos a utilizar. Para esto, ejecuten el siguiente comando:
git config --global core.editor "nano"
Si prefieren utilizar otro editor de texto, pueden cambiar
nano
por el nombre del editor que prefieran. Si no saben cual es el nombre del editor quegit
está utilizando, pueden ejecutar el comandogit config --global core.editor
para averiguarlo.
Ahora vamos a configurar git
para que utilice el branch main
por defecto. Para esto, ejecuten el siguiente comando:
git config --global init.defaultBranch main
Por último, vamos a configurar git
para que sepa que vamos a utilizar el protocolo SSH para conectarnos a GitHub (más información en el siguiente link). Para esto, ejecuten el siguiente comando:
ssh-keygen -t ed25519 -C "<correo>"
Recuerden reemplazar
<correo>
con la dirección de correo que utilizarón para registrarse en GitHub.
Esto creará una llave SSH en su computadora. Ahora, ejecuten el siguiente comando:
ssh-add ~/.ssh/id_ed25519
Nota: Si utilizaron un destino diferente, tienen que correr este comando con el path que utilizaron:
ssh-add <path>
Dirijanse a la siguiente página: https://github.com/settings/ssh/new y vamos a copiar nuestra llave SSH. Para esto, ejecuten el siguiente comando:
cat ~/.ssh/id_ed25519.pub
Nota: Si utilizaron un destino diferente, tienen que correr este comando con el path que utilizaron:
cat <patharchivo>.pub
Debería mostrar algo como lo siguiente:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5BBBBIHxwhp me@andrescv.dev
Y peguenlo en la pagina de GitHub.
Ahora, vamos a probar que todo está funcionando correctamente. Para esto, ejecuten el siguiente comando:
ssh -T git@github.com
Puede que les salga un mensaje como el siguiente:
> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Are you sure you want to continue connecting (yes/no)?
Si es así, escriban yes
y presionen enter. Al finalizar les debería aparecer un mensaje como el siguiente:
Hi <USUARIO>! You've successfully authenticated, but GitHub does not provide shell access.
<USUARIO>
es su nombre de usuario de GitHub.
git y GitHub remotes
Primero, algunas definiciones rápidas:
- Un remote es la página web host o servidor que va a almacenar su código remotamente en vez de tener únicamente el código de forma local en su propia computadora. Pueden pensar en esto de igual manera a como se almacena un archivo en DropBox o Google Drive pero con el poder que nos da
git
. - Un branch es una secuencia (por aparte) de diferentes cambios a su código. Pueden pensar en los branches como diferentes versiones de su código, que en algún punto fueron lo mismo. La siguiente figura muestra a que nos referimos como branches.
A lo largo de este curso, estarán trabajando en dos diferentes “computadoras” que generalmente tendran diferentes versiones de su código en algún tiempo. Estas dos son: su computadora personal y su remote de GitHub (sus repositorios privados de GitHub). Es esencial que entiendan la diferencia entre estas dos y como pueden compartir código entre ellas.
- Su computadora personal es la que les servirá para hacer todo el trabajo (laboratorios y proyectos) que necesiten hacer durante el curso.
- Su cuenta de GitHub y los remotes les servirán para muchos propósitos, pero la principal razón es para tener un backup o copia de respaldo, de tal manera que si algo malo le sucede a sus computadoras (esperamos no), puedan recuperar su código en vez de empezar de cero nuevamente. Conceptualmente, pueden pensar en los remotes de GitHub como otra computadora que únicamente almacena su código y nada más. Siempre deben subir sus cambios a GitHub haciendo push al remote (es decir actualizando los archivos en GitHub) y también pueden descargar los cambios de GitHub haciendo pull (actualizando los archivos en su computadora personal).
git cheat sheet
A continuación, les presentamos una lista de comandos que les serán útiles a lo largo del curso. Siempre pueden consultar esta lista cuando lo necesiten.
Comando | Descripción |
---|---|
git init | Inicializa un repositorio de git en el directorio actual |
git clone [url] | Clona un repositorio de git en el directorio actual |
git status | Muestra el estado actual del repositorio |
git add [archivo] | Agrega un archivo al staging area |
git add . | Agrega todos los archivos al staging area |
git commit -m "mensaje" | Crea un nuevo commit con los archivos en el staging area |
git push | Sube los cambios al repositorio remoto |
git pull | Baja los cambios del repositorio remoto |
git branch | Muestra las ramas del repositorio |
git checkout [rama] | Cambia a la rama especificada |
git merge [rama] | Fusiona la rama especificada con la rama actual |
git log | Muestra el historial de commits |
git diff | Muestra las diferencias entre el staging area y el último commit |
git reset --hard | Resetea el repositorio al último commit |
git reset --hard [commit] | Resetea el repositorio al commit especificado |
Para más información, pueden consultar la documentación oficial. O también pueden consultar el siguiente cheat sheet.