# Git

> Una máquina del tiempo para el código: cada cambio guardado, por quién y por qué.

- Nivel: Básico
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/git/
- En inglés: [Git](https://tidbit.legios.com.ar/git/)

**Git** es un programa que registra la historia de una carpeta de archivos. Cada vez que guardás un conjunto de cambios hacés un **commit**: una foto con un mensaje ("arreglo del login"), un autor y una fecha. Podés volver a cualquier foto, comparar dos, o ver quién cambió una línea y cuándo. Lo escribió Linus Torvalds en 2005 para manejar el kernel de Linux, y hoy se usa para casi todo el software.

Su segundo truco son las **ramas** (branches). Una rama es una línea de historia paralela: abrís una para probar algo nuevo, hacés commits tranquilo sin tocar la versión principal, y cuando funciona la **mergeás** de vuelta. Varias personas pueden trabajar en distintas ramas del mismo proyecto a la vez, y Git combina los resultados, avisando en las pocas líneas donde dos personas cambiaron lo mismo (un "conflicto").

Git en sí trabaja en tu máquina. **GitHub**, GitLab y Bitbucket son sitios que alojan una copia del repositorio para que un equipo lo comparta: `git push` manda tus commits para allá y `git pull` baja los de los demás. Un **pull request** en GitHub es una propuesta de mergear una rama, con una conversación de revisión adjunta. Casi todo el código abierto vive así.

## Una analogía

El control de cambios de un documento, pero para una carpeta entera, con la opción de probar una edición en una copia paralela y volver a juntarla cuando está lista.

## Para quedarse

- Un commit es una foto más un mensaje; la historia es una cadena de commits.
- Las ramas permiten trabajar en paralelo; el merge junta el trabajo.
- Git es la herramienta; GitHub es un lugar donde alojar el repositorio.
- `clone`, `commit`, `push`, `pull` y `merge` son los cinco comandos que más vas a escuchar.

## Para seguir leyendo

- [Libro Pro Git (oficial, en español)](https://git-scm.com/book/es/v2)
- [Documentación de Git (en inglés)](https://git-scm.com/doc)
- [Git (Wikipedia)](https://es.wikipedia.org/wiki/Git)

## Términos relacionados

- [Linux](https://tidbit.legios.com.ar/es/linux/): Un sistema operativo libre y de código abierto que mueve la mayoría de los servidores.
- [GitHub](https://tidbit.legios.com.ar/es/github/): Un sitio donde los equipos guardan su código con Git y trabajan juntos en él.
- [Revisión de código](https://tidbit.legios.com.ar/es/code-review/): Que otra persona lea un cambio de código antes de que pase a ser parte del producto.
- [Código abierto](https://tidbit.legios.com.ar/es/open-source/): Software cuyo código cualquiera puede leer, usar, cambiar y compartir.
