Cómo comprobar si una rama (branch) de Git está obsoleta (stale)

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo comprobar si una rama (branch) de Git está obsoleta examinando la fecha de su último commit. Comenzarás utilizando el comando fundamental git log para ver el historial de commits e identificar la fecha del último commit en una rama.

A continuación, explorarás el comando más potente git for-each-ref para recuperar de manera eficiente la fecha del último commit de múltiples ramas. Finalmente, aprenderás cómo comparar la actividad de diferentes ramas para determinar cuáles se pueden considerar obsoletas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/branch -.-> lab-560050{{"Cómo comprobar si una rama (branch) de Git está obsoleta (stale)"}} git/log -.-> lab-560050{{"Cómo comprobar si una rama (branch) de Git está obsoleta (stale)"}} end

Verificar la fecha del último commit con git log

En este paso, utilizaremos el comando git log para verificar la fecha del último commit en nuestro repositorio. Esta es una habilidad fundamental para entender la historia de tu proyecto.

Primero, asegúrate de estar en el directorio my-time-machine. Si no estás, utiliza el comando cd para navegar hasta allí:

cd ~/project/my-time-machine

Ahora, usemos git log para ver el historial de commits. Agregaremos una opción para hacer la salida más concisa y mostrar solo una línea por commit, lo cual es muy útil cuando tienes muchos commits.

git log --oneline

Deberías ver una salida similar a esta:

a1b2c3d (HEAD -> master) Send a message to the future

Esta salida muestra el hash del commit abreviado (a1b2c3d), la rama (branch) en la que se encuentra (HEAD -> master) y el mensaje del commit.

Para ver más detalles, incluyendo la fecha y hora del commit, puedes usar el comando git log sin ninguna opción:

git log

La salida será similar a la que viste en el laboratorio anterior, mostrando los detalles completos del commit:

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

La línea Date muestra cuándo se hizo el commit. Esto es crucial para seguir el progreso de tu proyecto y entender la cronología de los cambios.

Comprender git log es esencial para navegar por la historia de tu proyecto. Te permite ver cuándo se hicieron los cambios, quién los hizo y de qué se trataban los cambios (basado en el mensaje del commit). A medida que tu proyecto crece, este registro se convierte en una herramienta invaluable para la depuración, la colaboración y la comprensión de la evolución de tu código.

Utilizar git for-each-ref para la actividad de ramas (branches)

En este paso, exploraremos un comando de Git más avanzado, git for-each-ref, para obtener información detallada sobre nuestras ramas (branches), incluyendo la fecha del último commit en cada rama. Este comando es muy poderoso para la escritura de scripts y la personalización de la salida de Git.

Asegúrate de seguir estando en el directorio ~/project/my-time-machine.

El comando git for-each-ref te permite iterar sobre todas las referencias (como ramas y etiquetas) en tu repositorio y mostrar información sobre ellas en un formato especificado.

Usémoslo para enumerar nuestras ramas y la fecha de su último commit. Especificaremos el formato para mostrar la fecha del autor del commit y el nombre de la rama.

git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(refname:short)'

Desglosemos este comando:

  • git for-each-ref: El propio comando.
  • --sort=-committerdate: Esto ordena la salida por la fecha del autor del commit en orden descendente (los más recientes primero). El guión - antes de committerdate indica orden descendente.
  • refs/heads/: Esto le dice a Git que solo mire las referencias bajo refs/heads/, que son nuestras ramas locales.
  • --format='%(committerdate:short) %(refname:short)': Esto especifica el formato de salida.
    • %(committerdate:short): Muestra la fecha del autor del commit en un formato corto (YYYY-MM-DD).
    • %(refname:short): Muestra el nombre corto de la referencia (el nombre de la rama).

Deberías ver una salida similar a esta:

YYYY-MM-DD master

La fecha mostrada es la fecha del último commit en la rama master, que es el commit que creamos en el laboratorio anterior.

Si bien git log es excelente para ver el historial de una sola rama o de unos pocos commits, git for-each-ref es útil cuando quieres obtener información específica sobre múltiples referencias de manera estructurada. Esto es especialmente útil en proyectos más grandes con muchas ramas.

Comprender cómo usar git for-each-ref con diferentes opciones de formato abre muchas posibilidades para la escritura de scripts y la automatización de tareas relacionadas con tu repositorio de Git.

Comparar con ramas activas (active branches)

En este paso, compararemos la información que obtuvimos de git log y git for-each-ref y entenderemos cómo se relacionan con el concepto de ramas "activas".

Asegúrate de seguir estando en el directorio ~/project/my-time-machine.

Hemos visto que git log muestra el historial de la rama actual por defecto, y git for-each-ref refs/heads/ muestra información sobre todas las ramas locales. En nuestro repositorio simple actual, solo tenemos una rama, master, por lo que la fecha del último commit mostrada por ambos comandos será la misma.

Volvamos a ejecutar el comando git for-each-ref para ver la salida nuevamente:

git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(refname:short)'

Salida:

YYYY-MM-DD master

Y el comando git log --oneline:

git log --oneline

Salida:

a1b2c3d (HEAD -> master) Send a message to the future

Ambos comandos confirman que la última actividad (el último commit) en nuestro repositorio se realizó en la rama master, y muestran la fecha de ese commit.

En un proyecto del mundo real con múltiples ramas, git for-each-ref refs/heads/ ordenado por fecha del autor del commit es una forma rápida de ver qué ramas han tenido actividad reciente. Las ramas en la parte superior de la lista son las que se han trabajado más recientemente.

Comparar esta salida con la salida de git log en ramas específicas te ayuda a entender la actividad general en el repositorio y el historial específico de ramas individuales.

Por ejemplo, si tuvieras otra rama llamada feature-x, podrías ejecutar git log feature-x --oneline para ver su historial específico y comparar la fecha de su último commit con la fecha mostrada por git for-each-ref.

Esta capacidad de ver rápidamente la actividad reciente en todas las ramas es muy útil para los gerentes de proyecto y líderes de equipo para obtener una visión general del progreso del desarrollo.

Resumen

En este laboratorio, aprendimos cómo verificar si una rama (branch) de Git está obsoleta (stale) examinando su actividad. Comenzamos utilizando el comando fundamental git log para ver el historial de commits y, específicamente, identificar la fecha del último commit en una rama. Esto proporcionó una comprensión básica de la actividad reciente.

Luego, pasamos al comando más poderoso git for-each-ref, que nos permite recuperar información detallada sobre todas las ramas, incluyendo la fecha de su último commit. Este comando es especialmente útil para evaluar sistemáticamente la actividad en múltiples ramas e identificar aquellas que no se han actualizado recientemente.