Git es una solución que está directamente conectada con el área de programación web. Fue creada para facilitar la vida de los profesionales que trabajan con el desarrollo de sistemas. Seguramente, ya has tenido que editar un archivo y subirlo vía FTP y, cuando terminaste de subir, descubriste que poco tiempo después otras personas habían […]
Git es una solución que está directamente conectada con el área de programación web. Fue creada para facilitar la vida de los profesionales que trabajan con el desarrollo de sistemas.
Seguramente, ya has tenido que editar un archivo y subirlo vía FTP y, cuando terminaste de subir, descubriste que poco tiempo después otras personas habían subido el mismo archivo, sobrescribiendo los cambios que habías hecho.
Para evitar este desperdicio de tiempo y energía es que sirve Git.
Pero, ¿qué es Git, por qué lo crearon y cuáles son sus principales funcionalidades?
Te lo contaremos a continuación.
¿Qué es y cuál es el origen de Git?
Por definición, Git es un Sistema de Control de Versión Distribuido que fue creado por Linus Torvalds, más conocido por otra de sus creaciones, el Linux.
Linus desarrolló Git después de haber quedado insatisfecho con un cambio de licencia en el uso de BitKeeper, el sistema de control de versión utilizado por quienes desarrollan Linux.
Como en aquella época no existía nada similar, Torvalds creó su propia versión de un sistema para controlar los cambios del proyecto Linux. Y fue aquí donde surgió Git.
Lo que hace Git es registrar los cambios que ocurren en el código fuente de un proyecto. De esta forma, permite que los archivos sean alterados de forma simultánea, por innúmeras personas, sin la preocupación de que esos cambios sean sobrescritos por otras personas.
Debido a esa funcionalidad, si existiera algún problema en un cambio de código fuente, es posible restaurar a la versión anterior de una manera fácil y rápida.
Una tecnología como Git, es esencial para los equipos que estén trabajando en un mismo proyecto; pues simplifica el control de las operaciones realizadas por innúmeras personas.
¿Cuál es el diferencial de Git?
Su arquitectura descentralizada es lo que hace que Git sea diferenciado en relación con las otras opciones de sistemas similares.
Tenemos a Subversion y CSV, por ejemplo, con una arquitectura centralizada; es decir, que cuentan con un repositorio central.
Una de las desventajas de este tipo de arquitectura es el bajo rendimiento generado, en el caso de que haya muchos equipos y proyectos en un mismo repositorio. Además de esto, es necesario estar siempre en línea para realizar operaciones, como crear ramificaciones.
En la arquitectura descentralizada adoptada por Git, no hay necesariamente un repositorio oficial; sin embargo, es posible crearlo. Siendo así, en cada repositorio, incluyendo el de la máquina del contribuidor, existirá una copia completa y funcional, permitiendo el uso de las operaciones aunque estén offline.
Debemos citar que existen otros sistemas semejantes a Git, como Mercurial y Bazaar. Sin embargo, no son muy populares.
¿Cuál es la importancia de Git?
Git es importante en casi todos los proyectos realizados por equipos que trabajan lado a lado, debido a que evita que haya conflictos entre los cambios hechos.
Como los proyectos suelen estar en constante evolución, es común que ocurran cambios que puedan causar problemas en el funcionamiento de estos. En este caso, Git permite que los cambios sean revertidos de manera simple y rápida, volviendo a la versión antigua.
Actualmente, Git se utiliza de una forma tan amplia que conocer su funcionamiento es casi obligatorio para cualquier oportunidad de empleo que envuelva el área de programación.
¿Cómo funciona Git, en la práctica?
De manera simplificada, Git trabaja en una arquitectura en Branch (o ramificaciones). Cada nuevo commit, o sea, cambio de código, crea un nuevo punto de ramificación actual.
Conoce un ejemplo de un flujo de contribución en un proyecto utilizando a Git:
1. Clon del proyecto
El primer paso para obtener el código-fuente del proyecto es clonarlo en nuestras máquinas, para que sus archivos estén disponibles localmente.
2. Creación de Branch
Al crear una Branch, estamos haciendo una nueva ramificación, totalmente independiente, para que podamos alterar los archivos del proyecto sin interferir en los originales. El proceso se considera una buena práctica cuando se está trabajando en una funcionalidad reciente.
3. Commits
Conforme se van creando los archivos, estos se van clasificando en commits. Es importante que la descripción de cada commit sea objetiva, pues se quedará guardada en el histórico de los cambios.
4. Hora del Push
Cuando la funcionalidad esté totalmente finalizada, debemos enviar nuestra Branch y todos los cambios de vuelta al repositorio remoto. De esta forma, quedará disponible para que los demás contribuidores del proyecto puedan ver y alterar.
5. Merge para juntar todo
Para mezclar a los cambios de tu Branch con los archivos originales del proyecto, puedes utilizar el comando Merge. Después de esto, es necesario aplicar un commit y un push, para enviar una ramificación máster mezclada al repositorio remoto y dejar todo disponible para los demás contribuidores.
También existe el Pull Request, que tiene relación con la contribución en los proyectos open source. Básicamente, este ocurre cuando se le pide al dueño de un repositorio que algunas modificaciones sean incluidas en este.
¿Cuáles son los comandos más utilizados en Git?
Existen algunos comandos que suelen ser más utilizados por quien utiliza diariamente ese sistema de versionamiento. Conoce algunos de estos:
- Initialize: sirve para iniciar un repositorio vacío o reiniciar uno que ya existe;
- Clone: utilizado para clonar el repositorio;
- Add: sirve para agregar un archivo del State Area, para que sea vinculado a un siguiente commit;
- Commit: comando que sirve para mover los archivos del State Area hacia el repositorio local;
- Pull: utilizado para buscar y traer cambios del repositorio remoto para el repositorio local; es decir, unir los contenidos de los archivos alterados. En algunos casos, puede ser necesaria la intervención humana para realizar esa unión;
- Push: utilizado para enviar el archivo del repositorio local hacia el remoto;
- Murge: sirve para mezclar commits y branchs en la Branch actual;
- Log: permite ver el histórico de commits o uno en específico.
¿Git es lo mismo que Github?
Muchas personas confunden Git con Github, pero se trata de términos distintos. Como ya explicamos anteriormente, Git es un Sistema de Control de Versión Distribuido, mientras que Github es una plataforma para la creación de repositorios Git.
En otras palabras, Github permite que puedas crear un repositorio Git remoto, posibilitando que otras personas puedan clonarlo localmente, realizar alteraciones y enviar esos cambio al repositorio remoto.
Hay otros sistemas que permiten hospedar repositorios Git, incluyendo Gitlab y Bitbucket.
Es importante decir que utilizar un sistema de hosting de código es la forma más rápida y simple de crear un repositorio Git y comenzar a desarrollar proyectos increíbles en equipo.
¿Vale la pena utilizar Git?
Git se convirtió en una herramienta indispensable no apenas para el desarrollo de software, sino en cualquier otra actividad que envuelva colaboración en Internet. Es innegable su contribución, especialmente para la comunidad open source.
La evolución de la tecnología se debe, en gran parte, a la contribución mutua de personas distintas. Inclusive, los mayores proyectos de lenguajes y frameworks son open source, y es gracias a las comunidades y sus ayudas que la tecnología sigue en constante crecimiento.
En conclusión, Git tiene un papel importante en este ciclo de mejoras, permitiendo que las contribuciones puedan hacerse de forma eficiente.