Aprendiendo sobre sistemas de control de versiones y de gestión de proyectos: Git y GitHub

5 minute read

Published:

Un sistema de control de versiones permite al programador tener un mejor control sobre las versiones de código a la cual hace modificaciones continuamente durante el flujo de su trabajo. Así, un sistema de control de versiones (VCS, por sus siglas en inglés) es una herramienta indispensable en el toolbox de todo programador. En este caso, explicaremos algunos puntos sobre Git, el cual es un VCS y el porqué de sus ventajas frente a otros programas similares (Bitbucket, Perforce, SVN, etc). Git permite grabar o tomar snapshots a las distintas versiones del código fuente que el usuario realiza, permitiendo volver a cualquier versión sin tener que eliminar lo avanzado o crear otra carpeta con los mismos archivos avanzados hasta una determinada fecha. Esto permite que no se pierda lo logrado, en caso de que se estropee la versión actual y se requiera regresar a la última versión correcta o a cualquier otra hecha en cualquier punto del tiempo durante el trabajo.

Dentro de las ventajas de Git está su cómodo flujo de trabajo entre desarrolladores, haciendo posible que varias personas colaboren con el desarrollo de un código, sin tener que depender de un repositorio central como es el caso de los sistemas centralizados de control de versiones. Es decir, tiene flexibilidad en cuanto a que cada desarrollador funge de repositorio, permitiendo que otros desarrolladores contribuyan a su repositorio y aquel también puede contribuir con el repositorio de los demás.

La facilidad del trabajo colaborativo se debe a la característica de Git que se basa en abrir ramas o branches para una fuente de código, lo cual permite que distintos usuarios utilicen una rama independiente de la master (en este caso, la base de código principal). Así, cada desarrollador puede trabajar en una branch distinta y al final pueden realizar un merge para unificar los avances y obtener el producto final para el código fuente.

De esta manera, quedan atrás problemas como que el código final quedé con bugs, ya que a la hora de la integración final, y dependiendo de la naturaleza del flujo de trabajo, el administrador evalúa las distintas branches que “piden permiso” y las revisa para la unión final. Con ello, el proyecto final queda limpio y ordenado debido a la forma de la organización del flujo colaborativo.

Asimismo, está su capacidad de tener diferentes ramas de trabajo. Es decir, puedes realizar distintas versiones de tu código fuente en el cual puedes trabajar distintas cosas y, al final del proceso, puedes realizar un merge de ellas y que resulte en el producto final. Sí, al principio puede parecer confuso - y espero no estar confundiendote :grimacing:. Pero con el paso de práctica, más práctica y…más práctica, podrás entender Git al revés y al derecho.

La rama principal es la que contiene la versión principal de tus archivos. Con Git puedes crear más ramas. Así, la rama principal es intocable mientras utilizas distintas ramas (réplicas de tus códigos) y las modificas a tu gusto y ritmo. Una vez que consideres que la rama, o branche, que es el término en inglés, modificada esté terminada, la puedes integrar a tu rama final y así tener la versión final de tus archivos principales o código fuente.

Por otro lado, GitHub es una plataforma de gestión de proyectos que sirve para almacenar y compartir código entre los desarrolladores. Es una de las principales, sino la más importante plataforma de trabajo colaborativo a nivel de desarrollo. Es algo así como una red social que sirve para compartir códigos y sistemas de trabajos entre los usuarios. Github utiliza el sistema de control de versiones Git, explicado líneas arriba.

En términos prácticos, hay dos repositorios: uno a nivel local (es decir en el disco duro de tu computadora) y otro en la web (en este caso el repositorio de GitHub). Ambos están conectados a través del flujo de comandos de Git Bash con el cual puedes, a través de unas líneas de código, traspasar los cambios hechos a tus local files (repositorio local) al repositorio en línea (comúnmente denominado “remote repo”) o viceversa, a la hora que quieras clonar un repositorio remoto o quieras actualizar tus local files tomando como referencia el remote repo.

En este punto, te estarás preguntando de la utilidad de estos dos programas si no eres un programador. La forma de trabajo que Git y GitHub utilizan al principio puede ser un poco overwhelming, pero si logras ver más allá de los evidente (véase gráfico líneas abajo :laughing:), te darás cuenta que GitHub no solo es para programadores web, app-developers o data scientists.

Cualquier persona independientemente de su background puede utilizar estas herramientas debido a la gran funcionalidad que proveen en cuanto a su sistema de trabajo y uso en la vida profesional diaria, que permiten, como ya se mencionó, una mayor eficiencia en los guardados de las diferentes versiones del trabajo que se esté realizando. Ya seas un diseñador gráfico o un abogado, puedes utilizar Git para guardar tus avances de flyers o documentos sobre leyes que estás escribiendo y no quieres tener distintas versiones y que potencialmente te puedes equivocar al momento de elegir qué versión es la correcta y la final. Mejor (o peor ¿?) aún, si eres estudiante y estás realizando tu tesis, Git y Github te salvarán la vida cada cuanto y agradecerás haber aprendido el uso de esta herramienta (no me molesto si me das un mensajito de agradecimiento si conociste esta herramienta por mi post :heart: ). En próximos posts, estaré escribiendo sobre las principales funcionalidades de estas herramientas para que puedas usarlas o, en su defecto, averiguar más y convertirte en un maestro del sistema de control de versiones. Así que stay tuned!