У меня есть репозиторий 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
foo
с master
, он появится в списке git branch --merged master
. Но что произойдет, если вы еще раз зафиксируете foo
? Его больше нет в этом списке, или он, хотя и имеет новые коммиты, был однажды объединен в master
?
- person Craig Otis; 09.07.2013
--merged
перечисляет только ветки, которые полностью объединены в данную ветку.
- person Amber; 09.07.2013
gitk --remotes --not origin/master
покажет вам коммиты в каждой ветке, которые не были объединены в master.
- person yoyo; 21.06.2016
git branch --no-merged master
показывает только мои локальные ветки. Он не показывает ни одной ветки, которая не была проверена на моем компьютере и создана кем-то другим.
- person Anton Danilchenko; 26.02.2020
Вы также можете использовать параметр -r
, чтобы показать удаленные ветки, которые не были объединены в master:
git branch -r --merged master
git branch -r --no-merged
-a
для одновременного просмотра удаленного и локального
- person Simon Forsberg; 11.10.2014
Если ветка уже объединена, ее повторное слияние ничего не даст. Так что вам не нужно беспокоиться о "повторном слиянии" уже объединенных ветвей.
Чтобы ответить на ваш вопрос, вы можете просто написать
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