Encontre ramos Git não mesclados?

Eu tenho um repository Git com muitos ramos, alguns deles já mesclados e outros não. Como o número de ramificações é muito grande, como posso determinar quais ramificações ainda não foram mescladas? Eu gostaria de evitar ter que fazer uma mesclagem “octopus” e re-mesclar filiais que já foram mescladas.

    Tente isto:

    git branch --merged master 

    Faz o que diz na lata (lista ramos que foram fundidos em master ). Você também pode puxar o inverso com:

     git branch --no-merged master 

    Se você não especificar master , por exemplo,

     git branch --merged 

    então ele mostrará ramificações que foram mescladas no HEAD atual (então, se você estiver no master , é equivalente ao primeiro comando; se você estiver no foo , é equivalente a git branch --merged foo ).

    Você também pode comparar as ramificações upstream especificando o sinalizador -r e um ref para conferir, que pode ser local ou remoto:

     git branch -r --no-merged origin/master 

    Você também pode usar o parâmetro -r para mostrar as ramificações remotas que não foram mescladas no mestre:

     git branch -r --merged master git branch -r --no-merged 

    Se uma ramificação já estiver mesclada, mesclá-la novamente não fará nada. Portanto, você não precisa se preocupar com a “reimplante” de ramificações que já estão mescladas.

    Para responder a sua pergunta, você pode simplesmente emitir

      git branch --merged 

    para ver as filiais ou

      git branch --no-merged 

    para ver os twigs desimpedidos. Sua ramificação atual está implícita, mas você pode especificar outras ramificações, se desejar.

      git branch --no-merged integration 

    mostrará ramificações que ainda não foram mescladas no ramo de integration .

    O script abaixo encontrará todas as ramificações de origin/* que estão à frente da ramificação atual

     #!/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 

    A versão atualizada do script