¡Miércoles, Git!

¿Por qué Git?

📜 Historia que usar

🌳 Ramas

¿Difícil o no?

“Git no es precisamente la tecnología más fácil de usar del mundo, pero vos podés programar. Pudiste aprender al menos un lenguaje de programación. En comparación con eso, aprender lo básico de Git es fácil.”

Traducción de Mark Seemann en “Code that Fits in Your Head”

Pero…

A veces duele. 😱

Podéis compartir cosas feas que os pasaron con Git?

En realidad…

A veces duele. 😱

  • Commits que nos dan vergüenza
  • Commits en ramas equivocadas
  • Push de datos secretos (llave de API por ejemplo)

Nuestros objetivos hoy

💪 Prevenir algunos problemas

💪 Practicar cómo salir exitosamente de algunas situaciones horribles

Como vamos a trabajar

En tu entorno de Git habitual.

Podéis escribir lo que es su forma de usar Git? Yo: Positron+terminal a veces.

RStudio

Mostrar donde esta Git, la consola de R, la terminal.

Positron

Mostrar donde esta Git, la consola de R, la terminal.

Prevención: usethis::git_sitrep()

# hoy solo Git
usethis::git_sitrep(tool = "git", scope = "user")

https://usethis.r-lib.org/reference/git_sitrep.html

usethis::git_vaccinate()

Prevención: saber donde estás

👀 Staging area

👀 Rama

👀 Remote (GitHub?) vs local (tu ordenador)

Como vamos a trabajar

En carpetas temporarias creadas por saperlipopette.

Asi no rompemos nuestros proyectos importantes.

{saperlipopette}

Una herramienta para usar Git

Un paquete R para crear ejercicios en carpetas propias.

https://docs.ropensci.org/saperlipopette/

install.packages(
  'saperlipopette', 
  repos = c('https://packages.ropensci.org', 'https://cloud.r-project.org')
)

saperlipopette

saperlipopette: R para crear ejercicios de Git

  • R para crear el ejercicio en otra carpeta.

  • R en la nueva sesión para leer las instruciones.

  • Tus herramientas usuales para solucionar el problema de Git!

saperlipopette: cómo usar el paquete

  • Llama una función desde una sesión R.

  • Va a la carpeta creada (se ve en el output).

  • Abre R en esta carpeta, lee las instrucciones.

  • Trabaja con tus herramientas para Git o la terminal.

  • Cierra la sesion de ejercicio.

Prevención: escapar de Vim

Es difícil usar y salir de Vim…

Entonces mejor no entres!

Arreglar el editor de Git

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_check_editor(carpeta)

https://docs.ropensci.org/saperlipopette/reference/exo_check_editor.html

Arreglar el editor de Git

Tienes 10 minutos para arreglarlo!

A practicar situaciones horribles!

Haré demos y después las haréis también.

Mi último commit me da vergüenza 1/2

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_one_small_change(carpeta)

Mi último commit me da vergüenza 2/2

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_latest_message(carpeta)

Mi último commit me da vergüenza

15 minutos para resolver estos ejercicios. 😈

withr::local_language("es")
carpeta1 <- withr::local_tempdir()
saperlipopette::exo_one_small_change(carpeta1)
carpeta2 <- withr::local_tempdir()
saperlipopette::exo_latest_message(carpeta2)

Descanso (5 minutos) 😮‍💨

Mis cambios eran equivocados 1/2

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_undo_commit(carpeta)

Mis cambios eran equivocados 2/2

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_revert_file(carpeta)

Mis cambios eran equivocados

15 minutos para resolver estos ejercicios. 😈

withr::local_language("es")
carpeta1 <- withr::local_tempdir()
saperlipopette::exo_undo_commit(carpeta1)
carpeta2 <- withr::local_tempdir()
saperlipopette::exo_revert_file(carpeta2)

Hice el commit en una rama equivocada 1/2

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_committed_to_main(carpeta)

Hice el commit en una rama equivocada 2/2

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_committed_to_wrong(carpeta)

Hice el commit en una rama equivocada

15 minutos para resolver estos ejercicios. 😈

withr::local_language("es")
carpeta1 <- withr::local_tempdir()
saperlipopette::exo_committed_to_main(carpeta1)
carpeta2 <- withr::local_tempdir()
saperlipopette::exo_committed_to_wrong(carpeta2)

Hice algo horrible con rebase -i u otra barbaridad

withr::local_language("es")
carpeta <- withr::local_tempdir()
saperlipopette::exo_time_machine(carpeta)

Soluciónalo tu también en 10 minutos.

Conclusión

¿Cómo sufrir menos con Git?

Prevenir problemas: saber donde estás, no usar Vim, usar .gitignore.

Aprender a salir de situaciones de miércoles.

Otras situaciones que no vimos

¡Gracias! 💙 Gracias a Yanina Bellini Saibene y a RSLA26 en particular Luis Verde Arregoitia.

https://git-miercoles-rsla26.netlify.app/

https://docs.ropensci.org/saperlipopette/

Recursos de Git: en español

Git resources: General books

Git resources: R

Git resources: others