Guía de Git para comunicadores,
organizaciones sociales
y cocineros en general


Git es una tecnología maravillosa que nos permite trabajar colaborativamente entre varias personas, llevar un control de los cambios y sobre todo, permitir que el remix y el aprendizaje sean siempre abiertos.

Algo así merece la pena que le dediquemos un tiempo, ¿cierto? Si no te habías acercado hasta git por miedo a no entender nada, esperamos que esta guía te resulte un buen punto de inicio.



¡Empecemos!

Recetario de Git

¿Git... Qué?

Git (pronunciado "guit" ) es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos de código fuente.

Vale, de nuevo... ¿Qué?

Este suele ser uno de los problemas por los que herramientas como Git no acaban siendo usadas por quienes, en realidad, le sacarían un jugo tremendo: el lenguaje. Si, es difícil explicarlo de otro modo... pero no imposible. En el momento en que logremos, poco a poco, empezar a explicar por analogías mucho de lo que ocurre en internet en el lado de la programación, el código, lo hack y lo geek, seguro que empezaremos a abrir un camino aún inexplorado pero siempre deseado. Tanto para el bien del desarrollo colaborativo, como para el enriquecimiento de miradas por distintos grupos que puedan estar interesados, tomemos el reto.
Permitirme la osadía de intentar dar otro tipo de definición:
Git es un programa que permite, a quien desee, aportar nuevas ideas a una idea ya existente de forma colaborativa. Todo ello a través de un sistema de control y revisión que permite que puedas elegir si alguna de esas ideas propuestas mejoran la tuya, descartarlas, volver atrás si la acepté y me arrepentí, mezclar posibilidades y hacer las tuyas propias. ¿Todavía estás buscando a Wally en la ecuación? Vamos a ir un paso más allá e intentar contar lo que podrías hacer con Git como si de la preparación de un plato se tratase y trabajásemos entre varios cocineros.

Antes un poco de contexto...

Si te interesa saber cómo nace Git y de qué se trata desde un punto de vista técnico, lo vas a encontrar en la página oficial ... con ese bonito lema de "Lo distribuido en la nueva centralización" Y mira si tienes 15 minutos y quieres aprender Git (in english) pues también todo tuyo en modo crudo. Las plataformas más conocidas donde podemos utilizar Git son: GitHub, GitLab y BitBucket. También podemos instalar Git en nuestro propio servidor y no necesitar plataformas de terceros... pero eso para otro día. Particularmente usamos github, una tremenda red desde donde poder compartir tus códigos (esos conjuntos de instrucciones donde le decimos a un programa qué hacer, o a una web qué información mostrarnos), aprender de otros, leer, estudiar, seguir aprendiendo y sobre todo, conectar desde el hacer.

Metámonos en la cocina

Olvídate de códigos, palabras que suenan raro en tu cabeza, símbolos que nunca viste antes y demás jerga que te hacen cerrar la pestaña del navegador despavorido. Imagínate que una chef te invita a su cocina. Una en la que no sólo puedes darte una vuelta, mirar y ya está: se te permite leer sus libros de recetas de primera mano y conocer todos sus secretos. Y mejor todavía, la cocina cuenta con un sistema Git por el cuál tu puedes realizar sugerencias de mejora de estas recetas, copiártelas y llevártelas a tu cocina digital, continuar mejorándolas, practicar... pero sin la posibilidad de cambiar aquello que planteaba la chef de inicio en su receta, a no ser que te lo permita.

Has ido de visita con unas cuantas personas igual de curiosas que tú y han descubierto una fabulosa receta: cómo hacer pasta. La receta consiste en la forma de producción completa de la pasta hasta que está lista para hervir. La receta acaba cuando la hierve y la sirve en el plato. El aspecto vendría a ser una cosa parecida a la foto... ¿Yummy? Si eres de los que crees que le falta algo veamos qué puedes plantear...

GLOSARIO de un RECETARIO COLABORATIVO




Repositorio

El corazón de cualquier cocina, el lugar donde guardamos nuestras recetas. Un repositorio es cada una de ellas, de forma que podemos acceder para leerlas y estudiarlas. En nuestro repositorio guardamos las nuestras, pero cuando vamos al repositorio de otras chefs podemos realizar varias acciones, desde ponerles una estrella de favorito hasta copiárnoslas en nuestro repositorio para desde ahí plantear los cambios que queramos, eso es, hacer un fork.




Fork

Como no quieres estropearle la receta a la chef y prefieres practicar en tu propia cocina sin tener que esperar su aceptación, metes literalmente el tenedor (fork) y le sacas la receta de hacer pasta. Una vez en tu cocina tienes total libertad para probar todas las variables posibles. Que si ahora tomate, que luego queso, que me arrepiento y le quito el tomate, tal vez sea mejor con crema. Planteamos cambios en nuestra propia receta (commits & push) y cuando hemos dado con lo que realmente queremos proponer a la chef le enviamos una propuesta (pull request). Además, si me arrepiento, siempre puedo volver atrás ya tengo la receta inicial sobre cómo hacer pasta.





Commit

Decides innovar y lanzarte a la piscina... ¡Crees que estará mejor con albahaca!. Pero tus amigas y amigos no están de acuerdo contigo. Unos creen que mejor tomate, otros que aceite, otros tocino y los más iconoclasistas quieren colocarle piña (¡a la hoguera!). Cada uno de estos cambios realizados por nuestra parte es un commit. En nuestra receta aparecen así pero la receta maestra no ha sido modificada.



Push

Para poder hacer que los cambios en la receta tengan efecto debemos hacerlos públicos. Con el commit ya hemos hecho la solicitud de inclusión, el push es la acción por la cuál los cambios pasan a formar parte de la receta. En nuestras propias recetas (repositorios) hacer un commit y push van acompañados de la mano. Si quisiéramos hacerlo desde la receta de la chef invitada a la que hicimos un fork, sólo ella podrá aceptar los cambios haciendo un push desde la solicitud de cambio. Y esa solicitud se llama pull request, ¿y eso es...?



Pull request

Queda pendiente que la chef revise y acepte si es que alguna de esas propuestas realmente mejora su receta de pasta. Ella será quién le ponga la albahaca, el aceite, el tocino o la piña, y en qué medida. Estas propuestas son probables peticiones de cambio. Cada una de ellas aparecen como pull request para cambiar la receta original (el código fuente). La chef acepta finalmente la idea de la albahaca después de probarla antes. Agarra el bote y le mete de lleno... Acaba de hacer un pull. Parece buena, continuamos. O tal vez pasado el tiempo se arrepiente, ¡qué dilema!. Como anotó en la agenda (control de revisiones) el momento en que la puso, siempre puede volver al punto de inicio.



Issue

Cuando hemos estado leyendo la receta nos han surgido muchas dudas, hay un punto entre la ebullición del agua y el momento en que se mete la pasta que no nos queda claro. Entonces, podemos hacer preguntas sobre estas dudas que tenemos a través de los Issue. De esta forma mantenemos un diálogo, tanto entre la chef y yo, como con todas aquellas personas que han querido echar un ojo a la misma receta y tal vez tengan otras soluciones posibles. La cuestión no es arreglarlo entre dos, sino ¡entre todos los que quieren compartir!



Branches

Nos hemos metido varias personas al mismo tiempo a ver cómo podemos mejorar la receta. Estar trabajando todas al mismo tiempo, sobre los mismos paso a paso (el código) se puede convertir, y lo hace, en un desmadre. Entonces, hacemos una copia temporal desde la misma receta para tomar un camino alternativo, que puede acabar en algo que se sume finalmente a la receta final, o tal vez no. Estos caminos múltiples son las branches (ramas) y nos permiten estar modificando distintas partes de la receta al mismo tiempo por varias personas. Una vez tenemos certeza sobre el buen devenir de nuestra branch, ¿qué hacemos? Pues fusionarlas, es decir, un merge :).





Ahora, mejoremos esta receta usando Git

Esta guía no será ni mucho menos la mejor que encontrarás, e incluso puede que la sientas bastante incompleta. ¿Echas una mano para mejorarla? Desde Nodo Común hemos creado este mismo repositorio para que podamos mejorarla entre todas y todos desde nuestra propia página de Github:

Guía de Git para comunicadores, organizaciones sociales y cocineros en general

Para poder hacerlo necesitarás justamente poner en juego la terminología que aquí te explicamos, y al tiempo que pruebas metiendo las manos en la masa, practicar cómo funciona la lógica git y la plataforma de GitHub. También puedes meterle el tenedor desde el código fuente aquí: https://github.com/nodocomun/nodocomun.github.io






También puedes plantearte iniciar con tu propia página en GitHub, para ello hemos traducido la web oficial por si no entiendes bien el inglés: https://nodocomun.github.io/paginas-github/.