Introducción a Git
Publicado: 2022-06-30Cuando comencé a crear sitios web, "codificaba como un vaquero", lo que significa que a menudo editaba archivos en vivo en el servidor. Solo me tomó algunos sitios rotos para darme cuenta de que era una idea terrible. Luego comencé a construir sitios localmente en mi computadora. Más de una vez edité un archivo local solo para migrar el archivo a la ubicación incorrecta en mi cliente FTP. De vez en cuando eso significaba que sobreescribía un archivo que no podía arreglar sin buscar alguna copia de seguridad que con suerte había guardado.
Si todavía está tratando con FTP y no puede revertir sus archivos, entonces es hora de aprender a usar Git para el control de versiones.
¿Qué es el control de versiones?
Un sistema de control de versiones (VCS) es un tipo de software que ayuda a los desarrolladores de software a administrar los cambios en su código a lo largo del tiempo. Un buen sistema VCS hará un seguimiento de cada cambio en el código que se realice. Esto significa que si rompe algo, puede retroceder a una versión anterior del código que estaba funcionando, sin intentar presionar "Deshacer" hasta que todo funcione.
En un entorno de equipo, un VCS lo ayudará a trabajar con diferentes miembros brindándole herramientas que le permitirán fusionar cambios en el código cuando diferentes miembros actualicen archivos.
Una de las cosas que hago en Git es crear una nueva rama para cada característica que construyo. Esto significa que puedo realizar un seguimiento de los cambios que realizo en una rama, pero aun así volver al estado actual del sitio volviendo a la rama principal. Hablaremos más sobre este flujo de trabajo más adelante.
¿Qué es Git?
Git es un sistema de control de versiones, pero no es el único. El repositorio principal de WordPress se ejecuta a través de SVN, aunque también puede encontrar una copia de Git. También hay Mercurial, Visual Source Safe, VESTA y muchas otras opciones.
A pesar de todas estas opciones, Git es lo que casi todo el mundo usa, así que es el control de versiones sobre el que vamos a aprender hoy.
Términos y comandos básicos de Git
Antes de profundizar en la mecánica de cómo usar Git, debemos comprender algunos términos. Solo vamos a cubrir los términos que encontrará regularmente.
Para obtener una lista más completa de todo lo que podría encontrar, consulte este Git referencia o esto lista completa de comandos de Git .
Agregar : cuando haya realizado cambios en su código, usará el comando git add para agregar los cambios para que puedan confirmarse.
Rama : una rama es una versión de su repositorio que tiene una diferencia con el proyecto de trabajo principal. Todos los repositorios vienen con una rama principal o, más comúnmente en proyectos más antiguos, una rama maestra. Recientemente, Git y Github han comenzado a cambiar el nombre de rama predeterminado de maestro a principal debido a los problemas históricos con la palabra maestro. Git 2.28 también le permite establecer su nombre de rama predeterminado para cualquier proyecto nuevo.
Pago : usa el comando git checkout
para cambiar entre diferentes ramas en un repositorio. Cuando usa este comando, Git cambia el contenido de los archivos o agrega y elimina archivos que difieren entre ramas.
Clonar : el comando git clone
se usa para hacer una copia de un repositorio desde el repositorio de origen. Usaría este comando para obtener una copia local de un repositorio remoto para que pueda trabajar en el código.
Commit : una vez que haya usado git add
, debe usar git commit
para poder guardar el estado de sus archivos en git.
init : git init
crea un repositorio vacío para ti con todos los archivos básicos que Git necesita para operar.
Fusionar : una vez que haya realizado cambios en una rama y los haya agregado y confirmado, use el comando git merge para migrar esos cambios a otras ramas.
Origen : este es el nombre predeterminado para la versión principal del repositorio. Sin embargo, generalmente cambio el mío para que sea más descriptivo que el origen. Si estoy trabajando con Github, cambio la configuración en Git para que el origen se convierta en github. Esto me ayuda a mantener las cosas claras en mi cabeza.
Push : actualiza la rama remota con las confirmaciones que se han realizado en su versión local del repositorio.
Repositorio : Esto también puede llamarse "Repo" y es un directorio de todos los archivos, y un historial de Git de cambios en esos archivos.
Estado : el git status
muestra el estado actual de su repositorio de trabajo.
.gitignore : este es un archivo oculto que contiene patrones de archivos que Git no se molestará en rastrear. Si tiene .DS_Store
en sus archivos .gitignore
, ignorará todos los archivos molestos que macOS a menudo coloca dentro de las carpetas.
Alojamiento de repositorios Git
Otra cosa que debe comprender antes de sumergirse es que, si bien no necesita una ubicación remota para su repositorio, no tener una reducirá algunos de los beneficios de usar Git. Sin un repositorio remoto alojado en otro lugar, no tendrá una copia de seguridad de su código si su computadora muere o se la roban.
Github y Bitbucket son dos de los lugares más populares para alojar sus repositorios Git porque en su mayoría son gratuitos y puede tener repositorios privados. Eso significa que su código está en el servidor de otra persona, por lo que si no le gusta la idea, puede usar Gitlab en su servidor para alojar repositorios.
Instalando Git
En macOS, la forma más sencilla de instalar git es abrir Terminal y escribir git, lo que le pedirá que descargue las herramientas de línea de comandos de Xcode para instalar git. Una vez que haya terminado, puede ejecutar git –version para ver qué versión de git tiene. Si eso no funciona, hay algunas otras formas de instalar git en macOS.
Para usuarios de Windows, puede instalar Git con el instalador oficial de Git. Git también viene incluido con la aplicación Github Desktop, de la que hablaremos más adelante.
Si está en Linux, git debe estar incluido con su administrador de paquetes, o puede ver estas formas de instalar git en Linux.
Configuración de valores predeterminados de Git
Una vez que haya instalado Git, debe configurarlo para que cada confirmación use su nombre y correo electrónico y mensajes de confirmación para usar su editor preferido para ingresar cualquier comentario que vaya con la confirmación. Veremos la forma de configurarlos en macOS a través de la aplicación Terminal.
git config --global user.name "Your Name"
establecerá el nombre que va con cada confirmación realizada en tu computadora.
git config --global user.email "[email protected]"
establecerá la dirección de correo electrónico asociada con cada confirmación que realice.
git config --global core.editor vim
hará que el editor predeterminado para Git vim. Si bien me encanta vim, no es el editor lo que todos aman. Si usa Atom, entonces usaría git config –global core.editor “atom –wait” o git config –global core.editor “subl -n -w” para Sublime Text.
Si le gustan los IDE, Visual Studio Code también le permite trabajar con Git directamente desde la aplicación si lo desea, al igual que PHPStorm .
Establecer un repositorio
Ahora que tenemos git instalado y configurado, comencemos un repositorio básico. Abre tu Terminal y crea una carpeta llamada test-repository escribiendo mkdir test-repository
. Luego escriba cd test-repository
para cambiar a su directorio de repositorio de prueba y escriba git init
.

En este punto, tendrá un directorio oculto en su carpeta llamado .git
. Dado que es un archivo oculto, deberá escribir ls -a
en la Terminal para enumerar los archivos ocultos.
Usando git agregar
Ahora vamos a crear un archivo escribiendo touch test.txt
en la Terminal. A continuación, escriba git status
para ver el archivo que acaba de agregar.

Como puede ver, el nuevo archivo que creamos aparece en rojo y nos dice que su estado no está rastreado. Eso significa que Git ve el archivo, pero no tiene ningún registro del mismo.
Escriba git add test.txt
para decirle a Git que organice este archivo, luego escriba git status
nuevamente y Git debería informarle que conoce un archivo modificado.

Enviar archivos a Git
Ahora que hemos agregado nuestro archivo, debemos confirmarlo para que Git guarde el estado del archivo. Podemos hacer esto en una sola línea, sin abrir nuestro editor predeterminado con el siguiente comando.
git commit -m 'adding our first file'
La bandera -m
le dice a git que las palabras entre comillas simples son el comentario que acompaña al comando.
Ahora nuestro repositorio tiene un solo archivo con su estado guardado.
Crear una sucursal
El verdadero poder de Git surge cuando comienzas a ramificar. Digamos que desea escribir un montón en su archivo test.txt pero no está seguro de si terminará conservándolo y quiere asegurarse de que puede volver al archivo actualmente en blanco. Podemos hacer esto con una rama.
Para crear una rama, podemos escribir git checkout -b new-branch
. Este es un atajo para crear una rama al mismo tiempo que revisamos la rama, y es lo que uso cada vez que necesito crear una rama.
Ahora abra nuestro archivo test.txt
, agréguele texto y guárdelo. Luego use git add
y git commit
como se indicó anteriormente para guardar el estado del archivo.
Luego, escriba git checkout master
para volver a la rama principal predeterminada y luego mire el contenido de su archivo test.txt
nuevamente. Notarás que todo el texto que escribiste ha sido eliminado. Git incluso eliminaría un nuevo archivo que estaba solo en una rama, aunque mantiene un registro para que no desaparezca.
fusionar una sucursal
Ahora, amamos lo que sea que escribimos en nuestro archivo, así que integrémoslo con nuestra rama principal. Asegúrate de estar en la rama principal y escribe git merge new-branch
para integrar tus cambios.
Si observa el contenido de test.txt
ahora, encontrará sus cambios en la rama principal tal como los dejó.
Usando Git con WordPress
Si bien el ejemplo anterior fue extremadamente simple, eso es todo lo que necesita para comenzar a usar Git en sus proyectos. Así que hablemos exactamente de cómo obtienes un proyecto de WordPress usando Git.
La primera consideración es qué nivel en la jerarquía de carpetas debe ser la raíz de su repositorio de Git. Si está creando un tema, puede hacer que la carpeta del tema sea su repositorio. La misma lógica se aplica si está creando un complemento.
Por lo general, trabajo en temas y complementos al mismo tiempo, por lo que a menudo uso la carpeta wp-content como la ubicación de mi repositorio. Cuando hago esto, me aseguro de ignorar la carpeta de carga para no agregar todas las imágenes y archivos cargados al repositorio. Abarrotan el repositorio y pueden ralentizar a Git porque no es bueno para comprimir archivos de imagen.
Si estoy manejando un flujo de trabajo de implementación completo, convierto la carpeta raíz de WordPress en la ubicación principal de mi repositorio de Git. Luego me aseguro de agregar wp-content/uploads
y wp-config.php
a mi archivo .gitignore
. wp-config.php
es específico para cada instalación de WordPress, por lo que no quiero que se implemente sobre ninguna otra versión del archivo, lo que haría que el sitio dejara de funcionar.
Puede ver una copia del archivo .gitignore
que uso como punto de partida para cada proyecto. Se supone que está utilizando wp-content
como la raíz de su repositorio de Git, por lo que cambio algunos de los patrones de ignorar si estoy en la raíz de WordPress.
Aplicaciones GUI de Git
Si bien hemos cubierto los conceptos básicos a través de la línea de comandos para Git, no todos se sienten cómodos con la línea de comandos, sé que yo no lo estaba cuando comencé a usar Git. Incluso ahora, de vez en cuando quiero ver una representación visual de lo que está haciendo Git antes de realizar cambios en mi configuración.
Afortunadamente, hay varios clientes de GUI excelentes para Git que puede usar, así que resaltemos algunos.
Escritorio Github (Windows/macOS)
Un excelente lugar para comenzar a medida que observa los clientes de Git GUI es con la aplicación Github Desktop.

Muchos proyectos de código abierto usan Github como su repositorio de código para la colaboración y usan el flujo estándar de Github para hacer su trabajo. El cliente Github Desktop está diseñado para ayudarlo a manejar este flujo, por lo que facilitará la creación de solicitudes de extracción.
Si no está seguro de qué es una solicitud de extracción, consulte Documentación de Github sobre solicitudes de extracción
Desafortunadamente para los usuarios de Linux, no existe una aplicación oficial de Github Desktop, pero hay una bifurcación de Github Desktop que se instalará en los sistemas Linux.
Torre Git (Windows/macOS)
La GUI de Git que uso es Git Tower. Git Tower está disponible para macOS y Windows. Cuando comencé con Git, me resultó mucho más fácil resolver conflictos y ver qué era diferente entre los archivos dentro de esta GUI.

Copia de trabajo (iOS/iPadOS)
Si trabaja principalmente desde un iPad, como lo hago yo, entonces debería consultar la copia de trabajo. Working Copy es un cliente de Git con todas las funciones que funciona con iOS y iPadOS. Incluso presenta la integración de accesos directos para que pueda automatizar partes de su flujo de trabajo de Git.

Terminando
Si bien hemos cubierto mucho terreno en su conocimiento de Git hoy, no hay forma de que una sola publicación de blog pueda ser exhaustiva sobre el tema. Puede continuar su aprendizaje con la documentación de ayuda de Nexcess, así como con estos excelentes recursos.
- Documentación Git
- Libro Pro Git
- Lección Git de Laracast
- Recursos externos propios de Git
Al usar Git para administrar los proyectos de sus clientes, se ahorrará dolores de cabeza, ya que puede revertir los cambios o descartar ramas enteras si ya no desea el trabajo que ha realizado. No más Ctrl + Z hasta que creas que has retrocedido lo suficiente, Git hará un seguimiento de todo por ti.