Muchas personas en internet, mayormente programadores y desarrolladores, hablan constantemente de Github y de repositorios. Pero ¿qué son?, ¿cómo pueden ayudarte a organizar tus proyectos y trabajos?
Fuente
¿Qué es?
Github es un sistema de control de versiones (VCS) en línea, y además un servicio de hosting sencillo que ofrece todas las funcionalidades de Git. La principal característica de Github es que te permite llevar un registro de todos los cambios que realizas en los códigos fuente de tus proyectos y programas. Es decir, con Github puedes saber exactamente que líneas de tus archivos han sido modificadas: qué fue eliminado, y que fué agregado. Adicional a esto, Github permite introducir una pequeña descripción cada vez que se realiza una modificación en algún archivo para que así se pueda identificar más fácilmente los cambios que se han realizado en las distintas etapas de tu proyecto.
En verde aparecen las líneas nuevas, y en rojo las líneas eliminadas
Git, Github, ¿No son lo mismo?
Muchas personas suelen confundir Github con Git. Github es un servicio web basado en Git, mientras que Git es el motor detrás de Github. Git es el encargado de llevar el registro de todos los cambios que realizamos en nuestros archivos, de organizarlos, de resolver cualquier conflicto que pueda surgir, y Github es un portal con el que podemos hacer uso de estas funcionalidades.
Ideal para trabajar en equipos
Una de las características más importantes de Github es que este permite que varias personas puedan trabajar al mismo tiempo sobre el mismo archivo, y él mismo se encarga de que todos los cambios se integren de manera correcta, permitiendo además que todos puedan ver quién modificó cada archivo, y permite ver los cambios introducidos.
Dos usuarios trabajando en un mismo repositorio, aparecen las estadísticas de cada uno
proyecto.py, proyecto1.py, proyecto1final.py, proyecto1finalfinal.py ... Ya no más!
Olvídate de eso de tener 10 archivos exactamente iguales con el mismo nombre y un número que los identifica a cada uno, y que por supuesto, terminarás olvidando qué contiene cada uno. Con Github solamente trabajarás con un único archivo, y cada versión de tu archivo estará identificado por una secuencia alfanumérica de caracteres llamada hash. Github te permite explorar cada una de las versiones de tus archivos, ver cuáles han sido los cambios que has hecho en cada versión, y cada vez que haces una nueva modificación, mantienes el mismo archivo, pero su contenido es actualizado.
Cambios realizados al archivo index.html, se puede ver la descripción de los cambios a la izquierda, y su respectivo hash a la derecha
Retrocede en el tiempo
Mi programa funcionaba perfectamente ayer, pero hoy le modifiqué tantas cosas que ya no recuerdo cuáles eran y ya no funciona!!!
Esta situación suele ser algo relativamente común entre los programadores. Lo bueno es que Github te permite devolverte en el tiempo, es decir, puedes volver exactamente a la versión de tu programa que funcionaba ayer, sin tener que estar creando copias innecesarias de tus archivos. Esto es posible ya que puedes hacer un reset de tu archivo a una versión anterior, simplemente tienes que indicarle cual es el hash al que te quieres devolver. Y ya que cada vez que hacemos un cambio en nuestros archivos en Github agregamos una descripción de los cambios realizados, esto nos permite ubicar fácilmente la versión de nuestro programa que necesitamos.
Terminología básica de Git/Github
- Repositorio: es el contenedor de nuestros proyectos. Aquí se almacenarán todos nuestros archivos. Cada proyecto debe tener su propio repositorio. Los repositorios se encuentran tanto en nuestra computadora, como en nuestra cuenta de Github, lo ideal es mantener ambos en sincronía.
- Ramas: su nombre es bastante intuitivo, las ramas nos permiten crear ramificaciones de nuestros proyectos, bien sea para agregar una característica adicional o para arreglar un bug que tenga nuestro proyecto, teniendo una copia exactamente igual a la original, pero sin modificar la original. Una vez que se haya terminado de trabajar en una rama, esta se une nuevamente con la original.
- Commits: un commit es un cambio realizado a un archivo, o a un conjunto de ellos. Es decir, una vez que nosotros terminamos de modificar un archivo, hacemos un commit para poder guardar nuestros cambios.
- Pull y Push: cuando un usuario hace Pull, este actualizará el repositorio que tenga en su computadora con la última versión que se encuentre en internet. En cambio Push nos permite guardar en el servidor los cambios que hayamos hecho en nuestra computadora (los commits). Es decir, que si en la oficina yo modifico 5 archivos, hago un commit de esos cambios, y hago Push, estos cambios se actualizarán en mi cuenta de Github. Ahora, cuando llegue a mi casa y quiera tener los últimos cambios que hice, tengo que hacer un Pull de mi repositorio.
- Merge: un merge, o una mezcla, es una acción que se utiliza para poder unir dos ramas, y así poder integrar exitosamente los cambios realizados en una en la otra.
En otra oportunidad, mostraré como hacer un uso básico de Git y Github.