¿Qué es Git?

que es git git en fedora

Antes de saber ¿qué es Git?, comencemos por explicar qué es un Sistema de Control de Versiones (Version Control System, VCS) es un programa o herramienta que registra los cambios realizados a uno o muchos archivos durante un periodo de tiempo específico. De esta manera puedes revisar el historial de cambios, moverte entre versiones y recuperar archivos de versiones anteriores.

En la práctica si no usas un VCS estás obligado a hacer una copia del proyecto, comprimirla y guardarla para futuras desgracias, sí, eso de que el código tiene un bug y ahora ¿cómo lo hago para volver al código anterior? ¿dónde lo habré puesto? ¿tienes el teléfono de la persona que hizo esto? Esto solo hará que haya más errores, te lo aseguro.

En este post veremos el más popular, creado por Linus Tolvards (sí, el mismo que desarrolló el kernel de Linux). ¡Prolífico este tipo eh!

En algunos post como este o este he usado comandos de esta herramienta, así que podemos entender el potencial y su fama.

Beneficios de usar un Version Control System:

  • Ver el historial de los cambios de un archivo o el proyecto completo.
  • Ver quién fue la persona que hizo los cambios y cuándo los hizo.
  • Regresar a una versión específica del proyecto.
  • Colaborar con miembros del equipo, mantiendo sincronizados los cambios.
  • Incluir mensajes para cada “paquete” de cambios para informar a los miembros del equipo qué fue lo que se hizo.
  • Crear ramas (branches) que permitan hacer cambios específicos y luego unir estos con la rama principal.

Acá está la documentación oficial de GIT por si quieres ahondar en los detalles.

Si queremos trabajar con GIT, debemos conocer sus conceptos, porque aunque no es lo más complicado del mundo, entre más te introduces en ese mundo, las cosas se van complicando, así que entre mejor conozcas los términos que lo rodean será mucho más sencillo encontrar información cuando las dudas surjan… y surgirán.

Git es un VCS Distribuido (los hay centralizados como Subversion), lo que quiere decir que el usuario tiene una copia completa del proyecto, con todas sus versiones e historial. Cada usuario trabaja en su repositorio local y cuando sus cambios están listos se suben a un repositorio remoto, para que los otros usuarios lo puedan descargar.

Terminología de GIT

  • Directorio .git: aquí está guardado el historial de cambios, como si fuese una base de datos sqlite. Contiene la configuración, lista de objetos, logs, etc.
  • Repository (repo): es un lugar o espacio donde se almacenan los archivos de un proyecto. Además se encuentra la “base de datos” de los cambios realizados por los miembros del equipo. Estos pueden ser locales o remotos.
  • Object: es la unidad de git que se usa para almacenar el historial, tags, contenido de archivos, etc.
  • Hash: es un identificador que se usa para identificar un objeto en git y pueden ser archivos, directorios, el ID de un commit, etc. Se usan para comparar cambios entre archivos, por ejemplo. Es algo como 4e06d0980a85a98623ced2916bebefa5cb99088.
  • Commit: este es como el estado de tu proyecto en un tiempo determinado, es como sacarle una copia a los archivos, comprimir el directorio y guardarlo en algún lugar desde donde lo puedas recuperar después. El hash generado es guardado en la base de datos.
  • Branch: esto es como una desviación del camino. Una rama (branch) contiene su propia base de datos, por decirlo de alguna manera. Es independiente del proyecto principal, pero puede unirse una vez que se hayan hecho los cambios necesarios. Por lo general se usa para resolver algún bug o crear alguna funcionalidad extra.
  • Commands: estos nos ayudan a interactuar directamente con git, es decir, con estos comandos le decimos qué queremos hacer: renombrar un archivo, hacer un commit, regresar a una rama anterior o clonar un repositorio, entre muchas más cosas.
  • Remotes: este es un repositorio en un servidor compartido por los miembros del equipo para poder subir y descargar cambios. Sé que había mencionado que era distribuido y que todos tenían una copia, pero en algún momento tenemos que compartir y bajar actualizaciones ¿no?
  • Tag: estas se usan para marcar un punto importante del desarrollo, por ejemplo, cuando queremos liberar la versión 2.0 de nuestro proyecto, totalmente funcional, probado y nos sentimos muy orgullosos. Un tag debería ser usado en puntos muy específicos.
  • Clone: esto sucede cuando quieres descargarte un repositorio a tu computadora para comenzar a trabajar con él. Cuando hacer un clone de un repo, descargas todo el proyecto, incluyendo archivos e historial, incluso las branches.
  • Conflict: esto pasa cuando git no puede resolver de forma automática y exitosa la fusión de cambios tuyos con los de otra persona (muchas veces tus mismos cambios). Aquí tienes que intervenir y resolverlos de manera manual.

Instalar GIT en Fedora

Para instalar Git en Fedora solo tienes que abrir la consola y ejecutar

sudo dnf install git

Una vez instalado comprueba la versión:

git --version

Debes ver algo así:

git version 2.43.0

Configurar Git

Hay dos variables que se deben configurar en Git antes de iniciar a usar, el user.name y el user.email. Sin ellos no podrás realizar tus amados commits.

git config --global user.name "Manuel" 
git config --global user.email "[email protected]"

Puedes ver si esto ha tenido efecto introduciendo:

git config --list

Github

Seguramente habrás escuchado sobre Github y te habrás preguntado por la diferencia con Git y esta es básicamente que Gihub es una plataforma que agrega funcionalidad a tus operaciones para ampliar la administración de tus proyectos, como la gestión de usuarios, permisos, colaboración, issues, etc.

Al final sigue usando Git como su herramienta para las operaciones que vimos arriba, sin embargo, es una solución más completa de administración.

En los siguientes días estaré subiendo más contenido de Git.

Gracias por leer.


Posted

in

,

by