flowsta/sesiones/2021-10-20.md

124 lines
7.5 KiB
Markdown

# Git y Github
## El repositorio de pontedatos
- Ya tenemos un repositorio en la organización a la que pertenecemos como clase, <https://github.com/pontedatos/uc3m-periodismo-datos>
- Lo que vamos a hacer es o bien descargarlo si no lo hemos hecho o bien actualizarlo si ya lo habíamos descargado.
- Cuando digo "descargarlo" en realidad digo "clonarlo", es decir, voy a la carpeta de mi elección con el comando `cd` y escribo `git clone https://github.com/pontedatos/uc3m-periodismo-datos.git`.
- Esto creará una carpeta por debajo de donde me encuentro con el nombre `uc3m-periodismo-datos`. Esa carpeta es un repositorio git en nuestro ordenador, en `localhost`, que tiene el mismo contenido que el de la dirección desde donde me lo he clonado.
- Si ya hubiera hecho esto alguna vez tendría que ponerme dentro de la carpeta y actualizar con `git pull`.
## Nuestro repositorio
- Es probable que tengáis un repositorio vuestro cuyos contenidos solo estén en github.
- Vamos a descargarnos los datos de la misma manera que antes.
- Nos situamos en la carpeta elegida y clonamos con `git clone` seguido de la dirección de nuestro repositorio git en github.
- Luego con `cd` nos situamos dentro del repositorio.
- Ahora con `nano` o nuestro editor favorito cambiamos algo, guardamos, cerramos y seguimos tres pasos para actualizar los cambios en github:
- `git add nombre-archivo-cambiado`
- `git commit -m "comentario del cambio"`
- `git push origin main`
- Si al dar `git push` da error consultamos el error por el foro.
## No tenemos un repositorio
- Si no tuviéramos un repositorio podríamos crear uno nuevo.
- Primero creamos una carpeta con el nombre que queramos aunque lo suyo es que sea el nombre del repositorio.
- Luego con `cd` nos situamos dentro de la carpeta.
- Y entonces creamos un repositorio en Github y, cuando llegue el caso, seguimos en la terminal estos pasos que indican:
```bash
echo "# Proyecto de ..." >> README.md
git init
git add README.md
git commit -m "primer commit"
git remote add origin https://github.com/cuenta/nombre-repositorio
git push -u origin main
```
## No nos reconoce
- Comenta una compañera que tiene problemas con `git` porque en el paso `git commit -m` le sale un aviso que no logra interpretar.
- Una recomendación previa y para que lo tengáis en cuenta: conviene leer los mensajes que da el software e intentar interpretarlos adecuadamente. A veces nos "resuelven" el problema. Entiendo que "desconciertan" pero también hay que acostumbrarse a leerlos, a buscar soluciones e intentar resolver problemas/inconvenientes que surjan. En este caso, además, la compañera ha compartido una captura de pantalla del aviso y de esa manera ha sido fácil resolverlo, os lo cuento.
- Spoiler: lo que dice se resuelve en esta sección de este manual que os enlacé con mis notas de git y github:
<https://flowsta.github.io/github/#outline-container-org19f011c>
- Os lo explico paso a paso. La primera vez que usamos en el ordenador `git` de la manera que os propuse, es decir, no desde la interfaz de Github sino desde vuestro ordenador, a través de la terminal, tenemos que identificarnos.
- En este caso lo que dice es `Author identity unknown`, es decir, se desconoce la identidad de quién eres para `git`, para firmar ese `commit` y luego subirlo al servidor que vas a utilizar.
- Y además añade `*** Por favor, cuéntame quién eres`
- A continuación dice que corras (que ejecutes) dos líneas de instrucciones en la terminal. Tened en cuenta que cuando salen varias líneas en este tipo de avisos, como cuando instalamos `apt-cyg`, no se copian las dos líneas juntas sino que se pone primero una, se ejecuta, y luego la otra.
- En este caso, lo que dice primero es que les digas cuál es tu dirección de correo electrónico. En este caso, como usamos como servidor externo a Github, ponemos el correo electrónico con el que nos hemos registrado en Github: `git config --global user.email "tu-email-en-github"`
- En esta instrucción, la opción `--global` indica a `git` que siempre vas a usarlo en la terminal con este mismo `user.email`. Por tanto, no tendrás que volver a configurar esto.
- La siguiente línea solicita que le digas cuál el nombre de tu cuenta `git config --global user.name "cuenta-en-github"`
- A partir de ahí podréis seguir hasta el próximo desafío.
## :new: Tokens
- Para anticiparos el próximo "desafío" con que os vais a encontrar os cuento que Github cambió hace poco la forma de relacionarse con Github y ahora hay que generar una clave para subir los contenidos, para hacer el `git push`.
- Antes había que poner la contraseña de github, ahora hay que generar una clave.
- Esto se hace yendo a <https://github.com/settings/tokens> y generando un nuevo `token`.
- Hay que darle un nombre, elegir una fecha de caducidad (puede ser "nunca" aunque, ya que estáis aprendiendo, mejor ponerle una caducidad para que tengáis que volver a ese paso en algún momento) y seleccionar un ámbito de actuación o "scopes".
- Para lo que vamos a hacer basta con que marquéis "repo" y los que cuelgan de él:
- repo
- repo:status
- repo\_deployment
- public\_repo
- repo:invite
- security\_events
- Una vez marcado esto y creado el token os genera un "hash", un código que conviene que copiéis en alguna parte &#x2013;:warning: cuidado: no en los apuntes públicos&#x2013; y que será el que tengáis que poner cuando hagáis `git push` en vez de la contraseña.
# Enlaces
- Viejo manual de git y Github: <https://flowsta.github.io/github/>
- Recordad mis notas sobre Markdown en <https://flowsta.github.io/markdown>
- Editores para Markdown:
- MarkDownEditor, W$, <https://github.com/chenguanzhou/MarkDownEditor>
- Abricotine, W$-OSX-GX, <https://abricotine.brrd.fr/>
- MarkText, W$-OSX-GX, <https://marktext.app/>
- Ghostwriter, W$-OSX-GX, <https://wereturtle.github.io/ghostwriter/>
- Atom, GX, <https://atom.io/>
- VSCodium, W$-OSX-GX, <https://vscodium.com/>
- Remarkable, W$-GX, <https://remarkableapp.github.io/>
- Haroopad, W$-OSX-GX, <http://pad.haroopress.com/user.html>
- Emacs, W$-OSX-GX, <https://www.gnu.org/software/emacs/>
- nano, CLI, <https://www.nano-editor.org/>
- Data Science at the Command Line <https://www.datascienceatthecommandline.com/>
# Pruebas
## git
- Tal como hemos hecho con git y Github, clona tu repositorio en el lugar que consideres adecuado y coméntalo.
- Edita alguno de los archivos con tu editor favorito, por ejemplo, `nano`. Si no te acuerdas puedes preguntar por el foro y/o bien probar algún otro editor de los mencionados anteriormente.
- Actualiza el repositorio remoto.
## Comentario de visualización
- Según dijimos en la primera sesión, realiza un comentario de una o varias visualizaciones de datos y/o infografías que queráis y justificar las respuestas y la elección.
# Recordatorios
- Se puede solicitar tutoría para tratar temas del curso.
- Quien tiene problemas con ruby puede probar con la vía propuesta en la sesión anterior y contar cómo ha ido.
- Quien no tenga Cygwin configurado que repase los apuntes. Conviene tener instalado `apt-cyg` y el cambio de la `home`.
- Quien elija `nano` puede visitar su página web por si encuentra información útil: <https://www.nano-editor.org/>.
# ToDo
- Estilo de la terminal
- Estilo de PS1
- Resaltado de sintaxis en `nano`.
- [Atajos](https://www.nano-editor.org/dist/latest/cheatsheet.html) en `nano`
- Personalización en `nano`