Eliminar todas las ramas locales en Git

Ankit Raj Goyal 30 enero 2023
  1. Script detallado para eliminar todas las ramas locales en Git excepto master
  2. Modifique la secuencia de comandos para eliminar solo las ramas fusionadas con la opción -d en Git
  3. Use un script más fácil para eliminar todas las ramas locales en Git
  4. Modifique la secuencia de comandos para eliminar ramas locales con nombres similares a master Como master-prod en Git
  5. un script corto para eliminar todas las ramas locales en Git
  6. Comando de eliminación permanente de una línea para eliminar todas las ramas locales en Git
Eliminar todas las ramas locales en Git

Las ramas locales antiguas abarrotan su repositorio local pero no proporcionan ningún valor adicional. Puede eliminar todas las ramas locales de una sola vez con la ayuda de este tutorial.

Usamos comandos como grep, xargs y for-each-ref para escribir scripts para esta tarea. Mostramos varias opciones para diferentes casos de uso.

También proporcionamos un truco rápido de una línea para eliminar todas las ramas locales al final del tutorial.

Script detallado para eliminar todas las ramas locales en Git excepto master

Escribimos el siguiente script para que Git elimine todas las ramas locales excepto la rama master.

git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -D

Este script eliminará todas las ramas locales excepto la rama master, incluidas las ramas no fusionadas.

Analicemos este script para ver cómo funciona.

  1. El for-each-ref itera sobre todas las referencias en el repositorio. La cadena de format '%refname:short' extrae un nombre de referencia corto de los iterables y refs/heads apunta a sus heads.

    Pasamos la salida de for-each-ref al comando grep usando la tubería | operador.

  2. El comando grep busca en los encabezados de referencia que se le pasan para que coincidan con la cadena de expresión master\|main\|develop. Esto cubre diferentes nombres para su rama master; es posible que los haya llamado main o develop.

  3. La opción -v en el comando grep es para selección invertida. Por lo tanto, solo seleccionará aquellas ramas aquí que no coincidan con la expresión master\|main\|develop - esencialmente, selecciona todas las ramas locales excepto el master.

  4. Finalmente, el comando xargs toma todas estas ramas seleccionadas y las pasa como argumentos al comando git branch -D. El git branch -D es el comando para forzar la eliminación de todas las ramas pasadas como argumentos.

guión detallado eliminar todos los locales

Modifique la secuencia de comandos para eliminar solo las ramas fusionadas con la opción -d en Git

Podemos modificar el script anterior para eliminar solo las ramas fusionadas. Sustituimos la opción -D al final por la opción -d.

La -d es una opción de eliminación suave y solo elimina las ramas fusionadas.

git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -d

ramas fusionadas no fusionadas

Vemos que first_branch se fusiona, pero second_branch no se fusiona.

eliminar solo ramas fusionadas

Nuestro script modificado solo elimina la first_branch fusionada pero deja la second_branch no fusionada.

Use un script más fácil para eliminar todas las ramas locales en Git

Algunas personas pueden encontrar el script anterior demasiado complejo y excesivo. Podemos usar un script más fácil para hacer la misma tarea.

git branch | grep -v "master\|main\|develop" | xargs git branch -D

Este script reemplaza el complejo for-each-ref con el simple comando git branch.

Por favor, ten en cuenta que Git no recomienda el uso de git branch en los scripts. Pero a veces podemos desviarnos de la mejor práctica para una solución rápida.

script más pequeño eliminar todos los locales

Modifique la secuencia de comandos para eliminar ramas locales con nombres similares a master Como master-prod en Git

A veces, su repositorio puede tener ramas con nombres similares a master. Por ejemplo, algunas de tus ramas podrían tener nombres como master-prod o master-draft.

Podemos modificar la expresión regular en nuestro script de "master\|main\|develop" a "master$\|main$\|develop$" para lograr esta funcionalidad.

git branch | grep -v "master$\|main$\|develop$" | xargs git branch -D

rama nombre similar master prod

eliminar rama nombre similar master prod

un script corto para eliminar todas las ramas locales en Git

Podemos pasar expresiones regulares inteligentes a grep para acortar aún más nuestro script.

git checkout master
git branch | grep -v "^*" |xargs git branch -D

La expresión "^*" significa todas las ramas que comienzan (^) con la rama actual (*). Primero hicimos git checkout master, por lo que nuestra rama actual es master.

Por lo tanto, -v "^*" filtra nuestra rama actual, la master y elimina todas las demás ramas locales.

atajo eliminar ramas locales

Comando de eliminación permanente de una línea para eliminar todas las ramas locales en Git

Finalmente, como prometimos, le mostraremos un comando de eliminación permanente de una sola línea para eliminar todas las ramas locales en Git.

git branch -D $(git branch)

Este comando elimina todas las ramas excepto en la que se encuentra.

eliminación completa de una sola línea

Artículo relacionado - Git Branch