Найти несвязанные ветви Git?



У меня есть репозиторий Git со многими ветвями, некоторые из них уже объединены, а некоторые нет. Поскольку количество ветвей довольно велико, как я могу определить, какие ветви еще не были объединены? Я хотел бы избежать необходимости делать слияние "осьминога" и повторное слияние ветвей, которые уже были объединены.

630   4  

4 ответов:

попробуйте это:

git branch --merged master

он делает то, что он говорит на олово (список отраслей, которые были объединены в master). Вы также можете подтянуть обратное с:

git branch --no-merged master

если вы не укажете master, например..

git branch --merged

затем он покажет вам ветви, которые были объединены в текущий HEAD (так что если вы на master, это эквивалентно первой команде; если вы находитесь на foo это эквивалентно git branch --merged foo).

вы можете также сравните ветви вверх по течению, указав -r флаг и ссылка для проверки, которая может быть локальной или удаленной:

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

вы также можете использовать параметр-r для отображения удаленных ветвей, которые не были объединены в master:

git branch -r --merged master

git branch -r --no-merged

если ветка уже объединена, слияние ее снова ничего не сделает. поэтому вам не нужно беспокоиться о "повторном слиянии" ветвей, которые уже объединены.

чтобы ответить на ваш вопрос, вы можете просто использовать

 git branch --merged

чтобы увидеть объединенные ветви или

 git branch --no-merged

чтобы увидеть несвязанные ветви. Ваша текущая ветвь подразумевается, но вы можете указать другие ветви, если хотите.

 git branch --no-merged integration

покажет вам ветви, которые не являются и все же слились в integration филиала.

ниже скрипт найдет все origin/* ветви, которые опережают текущую ветвь

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

последняя версия скрипта

Comments

    Ничего не найдено.