¿Encontrar ramas de Git no fusionadas?

Resuelto fluca1978 asked hace 12 años • 4 respuestas

Tengo un repositorio de Git con muchas ramas, algunas de ellas ya fusionadas y otras no. Dado que la cantidad de sucursales es bastante grande, ¿cómo puedo determinar qué sucursales aún no se han fusionado? Me gustaría evitar tener que hacer una fusión "pulpo" y volver a fusionar ramas que ya se han fusionado.

fluca1978 avatar Sep 05 '12 13:09 fluca1978
Aceptado

Prueba esto:

git branch --merged master

Hace lo que dice en la lata (enumera las ramas en las que se han fusionado master). También puedes hacer lo inverso con:

git branch --no-merged master

Si no especifica master, por ejemplo...

git branch --merged

luego le mostrará las ramas que se han fusionado con la actual HEAD(por lo que si está en master, es equivalente al primer comando; si está en foo, es equivalente a git branch --merged foo).

También puede comparar ramas ascendentes especificando la -rbandera y una referencia para verificar, que puede ser local o remota:

git branch -r --no-merged origin/master
Amber avatar Sep 05 '2012 06:09 Amber

También puede usar el -rparámetro para mostrar ramas remotas que no se fusionaron con la maestra:

git branch -r --merged master

git branch -r --no-merged

                         
NemoXP avatar Apr 22 '2014 16:04 NemoXP

Si una rama ya está fusionada, fusionarla nuevamente no hará nada. Por lo tanto, no tiene que preocuparse por "volver a fusionar" ramas que ya están fusionadas.

Para responder a su pregunta, simplemente puede emitir

 git branch --merged

para ver las ramas fusionadas o

 git branch --no-merged

para ver las ramas no fusionadas. Su sucursal actual está implícita, pero puede especificar otras sucursales si lo desea.

 git branch --no-merged integration

le mostrará las ramas que aún no están fusionadas en integrationla rama.

Adam Dymitruk avatar Sep 05 '2012 06:09 Adam Dymitruk

El siguiente script encontrará todas origin/*las ramas que están por delante de la rama actual.

#!/bin/bash

CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)

echo -e "Current branch: \e[94m$CURRENT_BRANCH\e[0m"
echo ''

git branch -a | grep remotes/origin/ | while read LINE
do
    CMD="git diff --shortstat remotes/origin/${CURRENT_BRANCH}...${LINE}"

    if $CMD | grep ' file' > /dev/null; then
        echo -e "\e[93m$LINE\e[0m" | sed 's/remotes\/origin\///'
        $CMD
        echo ''
    fi
done
moldcraft avatar Jul 13 '2017 12:07 moldcraft