Una introducción a Git

Publicado: 2022-06-30

No importa si está creando un sitio web completamente nuevo, desarrollando un tema o complemento, o configurando estrategias avanzadas de integración e implementación continuas, estará trabajando con código.

Debajo de cada sitio web, se está ejecutando un código, ya sea que esté usando WordPress, WooCommerce, Drupal, Magento, NextJS o incluso HTML codificado a mano. Hay conjuntos de archivos necesarios para hacer que cada página se represente y muestre contenido al mundo.

Lo que descubre rápidamente es que necesita una forma de realizar un seguimiento de los cambios de código a lo largo del tiempo. Necesita saber qué cambios hay en la versión más actual de cualquier archivo y quién realizó cada cambio.

Aquí es donde entra en juego Git. Siga leyendo para aprender sobre Git, trabajar con repositorios remotos de Git y más.

Entendiendo Git

Git es un sistema de control de versiones que permite a los desarrolladores, y a cualquier otra persona que trabaje con archivos, crear y almacenar fácilmente versiones de sus cambios, ver un historial de esos cambios y compartir esos cambios entre dispositivos y sistemas, al mismo tiempo que proporciona una manera para deshacer esos cambios en caso de que algo salga mal.

Una breve historia

Allá por 2005, un equipo de desarrolladores estaba creando un proyecto llamado Linux, el sistema operativo gratuito y de código abierto. Necesitaban una forma de comunicar fácilmente los cambios entre cientos de colaboradores. Originalmente, habían estado pasando parches individuales que contenían el código actualizado, pero esto resultó problemático en muchos frentes, especialmente al determinar cuál era la versión "verdadera" y más reciente de cualquier conjunto de cambios en particular.

Frustrado por estos problemas, el proyecto Linux llevó a Linus Torvald a implementar una idea bastante novedosa para un proyecto para compartir la base de código completa entre desarrolladores y tomar "instantáneas" de sus cambios, llamados confirmaciones, que podrían compartirse y fusionarse con cualquier otra copia de el código, en cualquier parte del mundo. Inmediatamente esto ayudó con la comunicación, ya que todos los cambios del proyecto se podían ver como un solo historial.

Ese método para capturar estas instantáneas es Git, que rápidamente cobró vida propia y se ha desarrollado independientemente del proyecto Linux desde entonces.

Un gráfico de cambios

Conceptualmente, puede pensar en Git como un gráfico de nodos, donde cada nodo es una instantánea de todo el proyecto en un momento dado. El libro de Git, en git-scm.com, describe la estructura de una instantánea.

Git almacena datos como instantáneas del proyecto a lo largo del tiempo

Esta cadena de instantáneas crea un gráfico a lo largo del tiempo, con la versión más reciente al frente o en la parte superior de su historial de cambios. Cada instantánea se denomina "confirmación" en Git.

Este es un vistazo rápido a cómo se ve un proyecto de Git si coloca el cambio más reciente en la parte superior del gráfico. Nota: este ejemplo utiliza la GUI de GitKraken Git para visualizar el gráfico.

Ejemplo de gráfico git

Construyendo el gráfico de Git

Git crea este gráfico de cambios, también conocido como su historial de Git, a través de un proceso de confirmación de cambios. Sin embargo, antes de que pueda confirmar los cambios, deberá decirle específicamente a Git qué desea agregar a esa instantánea, o confirmar, como se hace referencia correctamente en Git.

Cuando trabaja localmente, todos los cambios que está guardando en su proyecto están en su "Directorio de trabajo". Git puede ver esos cambios, pero aún no sabe qué cambios desea confirmar. Deberá decirle a Git explícitamente qué cambios desea realizar utilizando un comando llamado "git add" para agregar esos archivos específicos al "área de preparación" de Git.

Una vez que tenga los cambios de archivo que desea confirmar en el gráfico de las instantáneas del proyecto, puede usar el comando "Git commit" para crear permanentemente esa instantánea en el gráfico.

Los pasos de agregar y confirmar de Git

Retrocediendo en el tiempo

Una de las ventajas de Git y de tener todo el historial de proyectos disponible es que puede retroceder y deshacer todos los cambios en cualquier momento.

Si la última confirmación que realiza rompe algo, o si cambia de opinión sobre lo que hizo, puede hacer una "reversión de Git" para revertir la confirmación de Git. Esto crea una nueva confirmación en el gráfico que simplemente deshace los cambios que acaba de realizar.

Si desea retroceder en el tiempo y hacer que parezca que nunca realizó una confirmación, puede usar "Restablecer Git" para hacerlo.

El poder de ramificar y fusionar en Git

Una de las características más poderosas que nos brinda Git es la capacidad de crear realidades alternativas paralelas. No realmente.

Dado que está creando un gráfico de confirmaciones a lo largo del tiempo, puede optar por crear líneas paralelas de confirmaciones, denominadas ramas, desde cualquier punto de su historial. Una rama de Git recién creada es independiente del historial principal, lo que significa que puede realizar los cambios que desee y no afectará su otro trabajo. La línea de tiempo principal también es una rama y se suele llamar rama "principal" o "maestra". Las nuevas sucursales y las sucursales distintas de la principal se denominan comúnmente "ramas destacadas".

Una vez que haya realizado los cambios en su rama de características, puede aplicar todos los cambios a la rama principal realizando una combinación de Git.

Hay una gran ventaja en trabajar de esta manera. Una rama de características aísla los cambios de código, por lo que si introduce errores, puede estar seguro de que la rama principal es segura. Trabajar en sucursales también libera la sucursal principal en caso de que necesite aplicar una actualización o corrección de seguridad sin interrumpir el trabajo de desarrollo en curso.

La fusión de Git también le permite extraer cambios de la rama principal a una rama de funciones. Esto le permite asegurarse de que las actualizaciones realizadas en la rama principal seguirán funcionando con los cambios propuestos antes de intentar fusionarlos con "principal".

Si está trabajando con un equipo, una estrategia de bifurcación de Git puede garantizar que su equipo pueda probar los cambios a fondo antes de que lleguen a producción y proporcionar una forma sencilla de administrar el proceso.

Trabajar con repositorios remotos en Git

Uno de los principales objetivos de Git es simplificar el intercambio de código con personas de todo el mundo. Construido en Git está la noción de un repositorio remoto.

Un repositorio de Git es la carpeta completa del proyecto donde almacena su trabajo y es lo que Git rastrea a lo largo del tiempo. Cada repositorio se puede clonar con el comando de clonación de Git y se puede compartir un número ilimitado de veces, lo que hace que Git sea muy escalable.

Otro aspecto que hace que Git sea muy escalable es que si cambia un documento, no necesita almacenar una copia completamente nueva de ese documento. Los cambios se almacenan como pequeños paquetes de información denominados "deltas", y solo las líneas modificadas individualmente de un archivo y un poco de información sobre el cambio es lo que Git necesita almacenar o compartir. Los deltas son muy ligeros, a menudo de unos pocos bytes de tamaño. Por ejemplo, si cambia una sola línea en un documento de 100 KB, el delta solo será de 20 bytes más o menos.

Para mantener todo en línea y coherente en todas las copias de un repositorio, simplemente debe designar qué copia, ubicada en qué computadora, es la copia "verdadera" del proyecto y luego asegurarse de que sus compromisos lleguen a esa copia.

Esto funciona a la inversa también. Al colaborar con otros, puede extraer sus cambios en su copia local del repositorio para asegurarse de que su copia local del proyecto esté actualizada.

El modelo git de trabajar con repositorios remotos

Hay una serie de empresas que hacen que la colaboración en repositorios remotos sea extremadamente simple y manejable. Plataformas como GitHub, GitLab y BitBucket ofrecen herramientas de colaboración y alojamiento de repositorio Git en línea. Hay muchos millones de repositorios de Git en línea administrados por millones de desarrolladores, y Git rastrea cada fuente única de verdad, sin importar cuántas personas estén colaborando.

Qué no almacenar en Git

Hablemos de lo que probablemente no deberías hacer con Git. Si bien Git es increíble para compartir código y rastrear cambios a lo largo del tiempo, hay algunos trabajos que no son adecuados para el modelo. Afortunadamente, Git nos brinda una forma práctica de decirle que ignore las cosas, llamada archivo ".gitignore".

Si hay un archivo ".gitiginore", Git lo comparará para ver si debería estar observando esos elementos. Dentro de un ".gitiginore" puede enumerar nombres de archivos individuales, directorios completos o tipos completos de archivos. Por ejemplo, si quisiera excluir todos los archivos .png y .jpg y toda su carpeta "wp-content/uploads", en sus archivos ".gitiginore" simplemente escribiría:

 *.png *.jpg wp-content/uploads

¿Por qué excluir archivos multimedia de Git?

Git almacena instantáneas de un proyecto y solo pasa los "deltas". Pero si el archivo en cuestión es una "mancha" de datos, como una imagen, un video o cualquier otro archivo binario, cada alteración del archivo creará una masa de datos completamente nueva. Luego, Git necesita recordar el estado tanto del blob antiguo como del blob nuevo, lo que agrega una gran cantidad de tamaño innecesario al repositorio. Esto se acumula con el tiempo y los repositorios pronto se vuelven difíciles de manejar a medida que se pierden los beneficios ligeros de Git.

Lo crea o no, es posible que no desee realizar un seguimiento de los cambios en el núcleo de WordPress. Hay un par de razones para esto.

Primero, hay un viejo dicho con cualquier CMS: "¡No piratee el núcleo!" No debería haber nada que esté cambiando en el núcleo de WordPress que deba ser rastreado. Cualquier actualización deberá provenir de WordPress y, si desea una versión anterior, se especifica fácilmente cuando la instala. Absolutamente puede almacenar una instalación completa de WordPress en Git, pero no tiene mucho valor hacerlo en ciertas situaciones. Realmente solo desea realizar un seguimiento de los cambios en el código que está manipulando, como sus complementos personalizados y temas secundarios. Es una muy buena idea consultar con su proveedor de alojamiento para obtener asesoramiento sobre este tema.

En segundo lugar, si planea contribuir a WordPress, encontrará que en realidad se mantiene a través de un sistema de control de versiones anterior llamado SVN. Este modelo requiere una infraestructura de servidor central y es mucho menos popular en comparación con Git, pero, de nuevo, WordPress es más antiguo que Git. Trabajar con el sistema de parches SVN es un poco diferente y debe consultar su documentación para obtener más información al respecto.

Conclusión

Con suerte, ahora comprende mejor qué es Git y cómo se puede aprovechar para trabajar con el código de su sitio web. Git se puede usar para todos y cada uno de los archivos que cambiará con el tiempo, incluso si no es un código de computadora.

Git se refiere a sus usuarios objetivo como "trabajadores del conocimiento", un término antiguo tomado de IBM. Para todo, desde notas en su escritorio hasta recetas y libros completos, Git le brinda una manera de organizar mejor su trabajo y dejar un rastro sólido de por qué realizó cada cambio y cuándo se realizó.

El poder de poder retroceder en el tiempo y ver los cambios, combinado con la capacidad de trabajar en universos paralelos ilimitados con bifurcaciones y fusiones, hace de Git una herramienta indispensable para cualquiera que trabaje en código. Git también es la forma principal en que los equipos colaboran en proyectos de código.

Git es de uso gratuito y la mayoría de las GUI de Git, como GitKraken, tienen versiones gratuitas. No hay ninguna razón por la que no deba usar Git para realizar un seguimiento de su trabajo, ¡así que "Git" para ello!

Recursos Relacionados

- Desarrollo Local WordPress con XAMPP

- Uso avanzado de Git y flujos de trabajo

- Ganchos Git

- ¿Qué es un sitio de desarrollo?

- Almacenamiento en caché para WordPress