Curso Git: 00 - Que es git y por que Github funciona tan bien

Hola buenas tardes, pocas herramientas me han sido tan útiles como git, últimamente voy por el mundo enseñando git a bastante gente y me parece preocupante que tan poca gente conozca o utilice la herramienta, sea en local o remoto, git esta diseñado para respaldar archivos con seguimiento de modificaciones, esto implica tener todas las versiones de un archivo y poder trasladarlo a cualquier versión anterior.

El origen de git, como la mayor parte del software excepcional, proviene de una necesidad excepcional, Linus Torvalds se dio cuenta en cierto punto del proyecto que era imposible gestionar el trabajo de muchas personas sobre el kernel de linux a mano, considerando que cualquier software pesado es ineficiente para tareas simples, fue desarrollado entre C, Bash y Perl. Su objetivo final es apoyar al desarrollo distribuido, no lineal y seguro, actualmente se utilizan varias paginas web a las que se les ha llamado forjas, por que terminan siendo el sitio de reunión de programadores, de la misma forma que una forja era el sitio donde los herreros se reunían a compartir conocimiento, las forjas mas conocidas son Github(comprada por microsoft), GitLab(GitLab.inc) y BitBucket.

Su funcionamiento es bastante simple, al iniciar un respaldo de git se crea una carpeta oculta llamada .git, dentro de ella se organizan varias carpetas y archivos que vertebran el seguimiento, hay que entender que git no hace seguimiento activo, para que un archivo pertenezca a nuestro repositorio hay que incluirlo, para que los cambios realizados sean almacenados y se guarde una versión nueva de nuestro proyecto, debemos agregar todos los archivos modificados a la pila de cambios cada vez, luego confirmar la nueva versión para que esta se almacene en esa base de datos improvisada que genera git.


La principal herramienta de git son las ramas, es posible tener un árbol de versiones, en proyectos de software es posible que haya grupos de trabajo muy grandes o proyectos con demasiadas características, existen mil formas de usar las ramas, a estos métodos se les conoce como flujos de trabajo, podríamos hacer una rama por cada característica que vayamos a agregar al software, se avanzará en esa rama hasta que la característica este correcta y luego se le unirá a la rama principal, normalmente llamada master, pero en realidad todo se puede renombrar.
El problema de este método es cuando existen muchas ramas y luego hay que unirlas al master, cada rama tendrá una serie de modificaciones únicas, estas deben ser compatibles por razones obvias, a raíz de ello empiezan a salir conflictos, archivos que en la misma linea dicen cosas diferentes, estos conflictos hay que solucionarlos a mano y no tengo ni el tiempo ni la paciencia para estar sufriendo, personalmente prefiero que en un equipo de trabajo todos trabajen sobre la rama master en archivos diferentes, cada persona añadirá su código a su respectivo modulo y las posibilidades de conflicto sean mínimas o inexistentes, muchos dicen que esto solo se puede hacer con equipos que tengan experiencia de trabajo, yo lo probé entre 4 personas, todos eramos novatos, así que se puede hacer hasta sin hablar mucho, simplemente por whatsapp hay que decir que has puesto un commit y te ahorras disgustos.

Aunque git es una poderosa herramienta, ya vamos viendo que en equipo siempre hay un gran riesgo de que ocurran problemas, trabajando solos no vamos a tener tantos, aun así hay algunas cosas que hay que tener en cuenta, en la próxima entrada vamos a hablar sobre los repositorios locales, los commit(confirmaciones) y las ramas, la siguiente va a ser configuración de github como repositorio remoto y al final lo mas importante, voy a aprender de una vez por todas como resolver conflictos de mezcla de ramas en github, esto lo trabajo por consola, hay varios gestores gráficos para git, me recomiendan mucho el de github pero no hay version para linux, así que no me sirve, también he trabajado con Git Gui que es una vergüenza para la naturaleza por lo mal diseñada que está la interfaz, si me caliento voy a terminar haciendo mi propia GUI para git, estoy  bastante incómodo con las existentes y aunque me controlo muy bien por consola, si que tengo varios amigos incómodos, podría hacer otra bonita herencia GPLV3 y de paso que mis compañeros tengan un inicio mas amistoso a git.

Comentarios

Entradas populares de este blog

Hablemos de difamación, parafilias y denuncias bien hechas

Criticamos a pablito: "Atrapado en el cuerpo equivocado"

El fruto de una era: Antiintelectualismo moderno