Descubre el poder de Git: Introducción al control de versiones - Parte 1

Descubre el poder de Git: Introducción al control de versiones - Parte 1

¡Hola! Aquí comienzo una interesante serie de artículos relacionados con una de las herramientas que todo desarrollador utiliza sin importar si es desarrollador frontend, backend, mobile, etc. Todos encontramos una herramienta en común para realizar backups de nuestro código, colaborar con otros desarrolladores, por lo que su buen entendimiento, conocimiento y uso es crucial para el día a día: hablamos de Git.

La idea de estos artículos es que obtengamos información ordenada y unificada al revisar tópicos desde lo más básico hasta lo más avanzado. Junto con esto, añadiré mi experiencia como desarrollador backend.


1) Una breve historia del control de versiones


Comencemos con un poco de historia. Hace algunos años, en el mundo de la programación, los desarrolladores se encontraban con un gran problema al trabajar en equipo: El control de versiones. Esto se debía a que, a menudo, varios programadores trabajaban en el mismo proyecto al mismo tiempo y necesitaban compartir su código entre ellos. Sin embargo, esto no siempre era fácil y, a menudo, surgían conflictos al intentar combinar el código de varias personas.

Para solucionar este problema, surgieron las primeras herramientas de control de versiones como CVS y Subversion, mismas que permitían a los desarrolladores trabajar en equipo y compartir su código de manera más eficiente. Sin embargo, estas primeras herramientas tenían algunas desventajas importantes:

  • Lentitud: Una de las razones principales de su lentitud era su arquitectura centralizada. En un sistema centralizado como Subversion, todos los cambios se registran en un servidor central y cada vez que un usuario necesita obtener una copia actualizada de un archivo, tiene que descargarlo del servidor central. Esto puede ser lento si el archivo es grande o si hay muchos cambios que se han realizado desde la última vez que se descargó una copia del archivo. Además, Subversion utilizaba el protocolo HTTP para la transferencia de archivos, lo que agregaba una sobrecarga adicional a las operaciones de lectura y escritura de archivos, lo que también contribuía a su lentitud.
  • Complejidad y Dificultad de uso: Subversion tenía términos técnicos y específicos que no eran fáciles de entender. Por ejemplo, revisión, confirmar y fusionar pueden tener diferentes significados en ese contexto. Adicionalmente,  requería una configuración complicada que podía ser abrumadora para usuarios nuevos o menos experimentados (por ejemplo, se necesitaba configurar un servidor y clientes para usar Subversion de manera efectiva). De igual forma, se utilizaban comandos complejos que debían escribirse en una línea de comandos, lo que podía ser confuso para algunos usuarios (svn checkout, svn commit y svn merge son algunos de los comandos más comunes). Finalmente, no se integraba fácilmente con otras herramientas de desarrollo, lo que hacía que fuera difícil de incorporar en el flujo de trabajo de algunos usuarios. Si alguien usa un editor de código específico, no siempre era fácil integrar Subversion con ese editor.
  • Dificultad en versionar proyectos a gran escala: Manejar un proyecto con muchos archivos, grandes y varias ramas de desarrollo era un dolor de cabeza porque su rendimiento se degrada significativamente a medida que crece el tamaño del proyecto y el número de desarrolladores que trabajan en él.

Un ejemplo sencillo de esto podría ser un equipo de desarrollo que trabaja en un proyecto de software muy grande con cientos de miles de líneas de código y múltiples ramas de desarrollo.

A medida que los desarrolladores realizan cambios en el código y envían sus modificaciones al repositorio SVN, el sistema debe realizar un seguimiento de cada uno de estos cambios y actualizar la versión del código que se encuentra en el repositorio central. Al aumentar los cambios y archivos, SVN puede volverse lento y menos eficiente, lo que puede afectar el tiempo de compilación del proyecto y el tiempo de respuesta del sistema.

Fue así entonces que Git salió al rescate.

2) ¿Qué es Git y por qué es tan bueno?


En simples palabras, Git es una herramienta de control de versiones “distribuida” y gratuita que permite a los desarrolladores trabajar en equipo y compartir su código de manera más eficiente.

En comparación con SVN, Git soluciona los problemas de lentitud, dificultad de usabilidad, configuración complicada, comandos complejos y falta de integración con otras herramientas de desarrollo.

  • Git es más rápido que SVN debido a su arquitectura distribuida. En lugar de tener un único servidor centralizado, cada usuario tiene una copia completa del repositorio en su propio dispositivo. Esto permite a los usuarios trabajar sin conexión a Internet y realizar operaciones más rápidas en su propio dispositivo.
  • Git es más fácil de usar que SVN porque tiene términos más intuitivos y claros, y no requiere una configuración compleja. Por ejemplo, en lugar de hablar de revisiones y confirmaciones, Git se refiere a commits y branches que son más fáciles de entender. Además, Git tiene una interfaz gráfica de usuario (GUI) y comandos más simples que facilitan su uso.
  • Git es más fácil de configurar que SVN porque no requiere un servidor centralizado. En lugar de ello, los usuarios pueden compartir su código a través de repositorios remotos que pueden alojarse en sitios web como GitHub, GitLab o Bitbucket. Esto hace que Git sea más fácil de usar para usuarios nuevos y menos experimentados.
  • Git tiene comandos más sencillos que pueden ser escritos en una línea de comandos. Por ejemplo, git clone, git commit y git merge son algunos comandos comunes en Git.
  • Git se integra fácilmente con otras herramientas de desarrollo. Por ejemplo, muchos editores de código, como Visual Studio Code y Atom, tienen extensiones que permiten una fácil integración con Git.
  • Git es más eficiente en el manejo de proyectos grandes y complejos porque no se ralentiza con el tamaño del proyecto y el número de desarrolladores que trabajan en él. Cada desarrollador puede trabajar en su propia copia del repositorio y hacer cambios de manera independiente. Luego, los cambios se combinan utilizando un proceso llamado merge que permite mantener la integridad del proyecto.

3) La línea de comandos


La línea de comandos de Git es una interfaz de texto que permite interactuar con el sistema de control de versiones Git mediante el uso de comandos. Aunque Git tiene una interfaz gráfica de usuario, muchas personas prefieren trabajar con la línea de comandos por varias razones:

  • Eficiencia: la línea de comandos puede ser más rápida que la interfaz gráfica de usuario para ciertas tareas, especialmente para tareas repetitivas o para trabajar con proyectos grandes.
  • Control: la línea de comandos permite un mayor control y personalización de los comandos que se ejecutan, lo que puede ser útil para usuarios avanzados.
  • Portabilidad: la línea de comandos se puede ejecutar en cualquier sistema operativo que tenga Git instalado, lo que lo hace más portátil que la interfaz gráfica de usuario.
  • Consistencia: la línea de comandos tiene una sintaxis y flujo de trabajo consistente que no cambia entre diferentes versiones o sistemas operativos.

Aunque la línea de comandos de Git puede parecer intimidante para los usuarios nuevos, con la práctica se vuelve más fácil y puede ser muy poderosa. Algunos de los comandos más comunes en Git incluyen:

  • git init: inicia un nuevo repositorio de Git.
  • git add: agrega un archivo al área de preparación para ser incluido en el próximo commit.
  • git commit: crea un nuevo commit que contiene los cambios realizados en los archivos agregados al área de preparación.
  • git push: envía los cambios del repositorio local al repositorio remoto.
  • git pull: descarga los cambios del repositorio remoto y los fusiona con los cambios locales.
  • git branch: muestra una lista de las ramas en el repositorio.
  • git checkout: cambia la rama actual del repositorio.

Estos son solo algunos de los comandos disponibles en Git. A lo largo de esta serie de artículos entraremos en profundidad, así como explicaciones detalladas de cómo se usan.

4) Instalación de Git

Windows

  1. Descarga el instalador de Git desde la página oficial: https://git-scm.com/downloads
  2. Una vez descargado, haz doble clic en el archivo para abrir el instalador.
  3. Aparecerá una ventana de bienvenida. Haz clic en Next para continuar.
  4. A continuación, aparecerá una pantalla de acuerdo de licencia. Lee los términos y condiciones y, si estás de acuerdo, haz clic en Next.
  5. El siguiente paso te permitirá seleccionar la ubicación donde deseas instalar Git. A menos que tengas una razón específica para cambiarla, puedes dejar la configuración predeterminada y hacer clic en Next.
  6. En la siguiente pantalla, el instalador te preguntará qué componentes deseas instalar. Aquí, puedes dejar todas las opciones predeterminadas y hacer clic en Next.
  7. En la siguiente pantalla, el instalador te preguntará qué editor de texto deseas utilizar para Git. De nuevo, puedes dejar la opción predeterminada y hacer clic en Next.
  8. A continuación, se te preguntará qué terminal de línea de comandos deseas utilizar. De nuevo, puedes dejar la opción predeterminada y hacer clic en Next.
  9. En la siguiente pantalla, el instalador te preguntará si deseas crear accesos directos para Git. Puedes elegir si deseas que se creen accesos directos en el escritorio y/o en el menú de inicio. Una vez que hayas seleccionado tus opciones, haz clic en Next.
  10. Finalmente, se te preguntará si deseas que Git utilice el sistema de Git Bash. Puedes dejar la opción predeterminada y hacer clic en Next.
  11. Se iniciará la instalación. Este proceso puede tardar unos minutos.
  12. Una vez que se haya completado la instalación, haz clic en Finish para salir del instalador.

Mac

1) Abre la App Store en tu Mac.

2) En la barra de búsqueda, escribe xcode y presiona Enter.

3) Haz clic en el botón Obtener al lado de xcode para descargar e instalar la herramienta.

4) Abre la Terminal en tu Mac. Puedes hacerlo buscando Terminal en Spotlight o en la carpeta Utilidades dentro de la carpeta Aplicaciones.

5) Verifica que xcode Command Line Tools esté instalado escribiendo el siguiente comando en la Terminal: xcode-select.

Si la respuesta es algo como "/Applications/Xcode.app/Contents/Developer", entonces está instalado. Si la respuesta es vacía, significa que no está instalado y debes instalarlo.

6) Instala Git usando Homebrew. Si no tienes Homebrew instalado en tu Mac, abre la Terminal y escribe:

Luego, sigue las instrucciones para instalar Homebrew.

7) Una vez que tengas Homebrew instalado, escribe el siguiente comando en la terminal para instalar Git:

  • brew install git

8) Espera a que se complete la instalación. Una vez que se complete, verifica que Git esté instalado escribiendo el siguiente comando en la Terminal:

  • git --version

Con eso deberías ver la versión de Git que acabas de instalar.


Linux

1) Abre la terminal. En la mayoría de las distribuciones de Linux, la terminal se encuentra en el menú de aplicaciones, en la carpeta de utilidades o en la barra de tareas.

2) Verifica si Git ya está instalado en tu sistema escribiendo el siguiente comando en la terminal y presionando enter:

  • git --version

Si Git ya está instalado, se mostrará la versión instalada. Si no está instalado, te mostrará un mensaje de error.

3) Si Git no está instalado, usa el siguiente comando para instalarlo:

En distribuciones basadas en Debian, como Ubuntu:

  • sudo apt-get update | sudo apt-get install git

En distribuciones basadas en Red Hat, como Fedora y CentOS:

  • sudo yum install git

En distribuciones basadas en SUSE, como openSUSE:

  • sudo zypper install git

4) Una vez que el proceso de instalación haya finalizado, verifica que Git se haya instalado correctamente escribiendo el siguiente comando en la terminal:

  • git --version

Con eso, deberías ver la versión de Git instalada en tu sistema.

5) Configuración de Git por primera vez

Después de instalar Git, es importante configurarlo correctamente para que funcione correctamente en su sistema. Aquí hay algunos pasos a seguir para configurar Git por primera vez:

1) Abre la terminal: La mayoría de las distribuciones de Linux incluyen un emulador de terminal que puede abrirse en el menú de aplicaciones.

2) Verifica que Git esté instalado: Antes de comenzar a configurar Git, asegúrate de que esté instalado en tu sistema. Para verificar la versión de Git instalada, abra la terminal y escribe:

  • git --version

Deberías ver la versión de Git instalada en tu sistema.

3) Configura tu nombre de usuario y correo electrónico: Para configurar Git, es importante establecer tu nombre de usuario y dirección de correo electrónico para que sus contribuciones en el futuro puedan ser atribuidas a usted. Para hacer esto, escriba los siguientes comandos en la terminal, reemplazando "tu nombre" y "tu correo electrónico" con tu información personal:

  • git config --global user.name "tu nombre"
  • git config --global user.email "tu correo electrónico"

4) Configurar el editor de texto predeterminado: Git utiliza un editor de texto para mostrar mensajes y para escribir descripciones. El editor predeterminado de Git es Vim, que no es muy fácil de usar para los nuevos usuarios. Para cambiar el editor predeterminado de Git, usa el siguiente comando:

  • git config --global core.editor "nombre del editor"

Por ejemplo, si deseas usar Nano como tu editor predeterminado, escribe el siguiente comando:

  • git config --global core.editor nano

5) Configurar la interfaz predeterminada: Git tiene dos interfaces predeterminadas: la línea de comandos y la interfaz gráfica de usuario (GUI). Si prefieres utilizar la interfaz de línea de comandos, no necesitas hacer nada, pero si deseas utilizar la GUI, necesitas instalar una aplicación que proporcione una GUI para Git. Para configurar la interfaz predeterminada, usa el siguiente comando:

  • git config --global core.gui "nombre de la GUI"

Por ejemplo, si deseas utilizar GitK como su GUI predeterminada, escribe el siguiente comando:

  • git config --global core.gui gitk


Con estos pasos, deberías poder configurar Git correctamente en tu sistema. Estos comandos son solo un ejemplo, así que puedes personalizar tu configuración según tus necesidades.

6) Obtener ayuda

Si alguna vez necesitas ayuda mientras usas Git, hay tres formas equivalentes de obtener la página del manual completo (manpage) para cualquier comando de Git:

  • $ git help <verb>
  • $ git <verb> --help
  • $ man git-<verb>

Por ejemplo, puedes obtener la ayuda de la página del manual para el comando git config ejecutando esto:

  • $ git help config

Estos comandos son útiles porque puedes acceder a ellos en cualquier lugar, incluso sin conexión a internet.

Además, si no necesitas la ayuda completa de la página del manual, sino solo un recordatorio rápido de las opciones disponibles para un comando de Git, puedes solicitar la salida "ayuda" más concisa con la opción -h, como en:

  • $ git add -h


Resumen

En este artículo hablamos sobre el control de versiones, por qué existe, cuál es su utilidad y herramientas usadas en un comienzo. También se mencionan las limitaciones de herramientas anteriores como SVN, que incluían problemas de velocidad, complejidad y dificultad de uso que llevaron al desarrollo de herramientas como Git.

Al ser  gratuita y distribuida de control de versiones que resuelve las limitaciones de SVN, Git es más rápida, fácil de usar y se integra bien con otras herramientas de desarrollo, además de poderse instalar en cada sistema operativo y aplicar algunos comandos básicos para habilitarla en nuestro sistema.

Es mi deseo que esta primera parte haya sido de utilidad para comprender los detalles básicos de Git. En las siguientes iremos más alla con esta gran herramienta. ¡Ahí nos vemos!

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.