Найти несвязанные ветви Git?
У меня есть репозиторий Git со многими ветвями, некоторые из них уже объединены, а некоторые нет. Поскольку количество ветвей довольно велико, как я могу определить, какие ветви еще не были объединены? Я хотел бы избежать необходимости делать слияние "осьминога" и повторное слияние ветвей, которые уже были объединены.
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