Saltar al contenido

¿Cómo puedo eliminar todas las ramas de Git que se han fusionado?

Solución:

ACTUALIZAR:

Puede agregar otras ramas para excluir como master y dev si su flujo de trabajo las tiene como un posible ancestro. Por lo general, me desvío de una etiqueta “sprint-start” y master, dev y qa no son ancestros.

Primero, enumere las ramas de seguimiento local que se fusionaron en remoto (puede considerar usar la marca -r para enumerar todas las ramas de seguimiento remoto como se sugiere en otras respuestas).

git branch --merged

Es posible que vea algunas ramas que no desee eliminar. podemos agregar algunos argumentos para omitir ramas importantes que no queremos eliminar como maestro o desarrollo. El siguiente comando omitirá la rama maestra y todo lo que tenga dev.

git branch --merged| egrep -v "(^*|master|main|dev)"

Si desea omitir, puede agregarlo al comando egrep como se muestra a continuación. La rama skip_branch_name no se eliminará.

git branch --merged| egrep -v "(^*|master|main|dev|skip_branch_name)"

Para eliminar todas las sucursales locales que ya están fusionadas en la sucursal actualmente desprotegida:

git branch --merged | egrep -v "(^*|master|main|dev)" | xargs git branch -d

Puede ver que el maestro y el desarrollador están excluidos en caso de que sean un antepasado.


Puede eliminar una rama local fusionada con:

git branch -d branchname

Si no está combinado, use:

git branch -D branchname

Para eliminarlo del uso remoto:

git push --delete origin branchname

git push origin :branchname    # for really old git

Una vez que elimine la rama del control remoto, puede podar para deshacerse de las ramas de seguimiento remoto con:

git remote prune origin

o pode las ramas de seguimiento remoto individuales, como sugiere la otra respuesta, con:

git branch -dr branchname

Para eliminar todas las ramas en el control remoto que ya están fusionadas:

git branch -r --merged | grep -v master | sed 's/origin//:/' | xargs -n 1 git push origin

En versiones más recientes de Git

git branch -r --merged | grep -v master | sed 's/origin///' | xargs -n 1 git push --delete origin

ACTUALIZAR (por @oliver; ya que no cabe en el comentario, pero ya hay suficientes respuestas): si está en la sucursal ABC, ABC aparecerá en los resultados de git branch -r --merged debido a que la rama no está especificada, la rama predeterminada es la rama actual, y una rama siempre califica como fusionada a sí misma (¡porque no hay diferencias entre una rama y ella misma!).

Entonces, especifique la rama:

git branch -r --merged master | grep -v master ...

O primer maestro de pago:

git checkout master | git branch -r --merged | grep -v ...

Solo extendiendo un poco la respuesta de Adam:

Agregue esto a su configuración de Git ejecutando git config -e --global

[alias]
    cleanup = "!git branch --merged | grep  -v '\*\|master\|develop' | xargs -n 1 git branch -d"

Y luego puede eliminar todas las ramas combinadas locales haciendo un simple git cleanup.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *