git: лучший способ определить неотключенные ветви в скрипте
В интерактивном режиме я могу использовать git branch -r --no-merged
команда для определения удаленных веток, которые еще не были объединены. Тем не мение, git branch
является командой фарфора и поэтому не подходит для использования в сценарии.
Есть ли какая-нибудь хорошая сантехническая команда, которую я могу использовать, чтобы определить те же ветви, возвращаемые --no-merged
вариант?
1 ответ
Решение
Я обнаружил, что команда git merge-base
поддерживает --is-ancestor
аргумент, чтобы проверить, содержится ли фиксация в истории другого. Используя это, я могу найти unmerged удаленные ссылки, как это (в ksh):
function showUnmerged {
typeset -a unmergedRefs=()
git for-each-ref --format='%(objectname) %(refname)' refs/remotes | \
while read -r hash ref; do
git merge-base --is-ancestor "$hash" "$1" || unmergedRefs+=("$ref")
done
echo "${unmergedRefs[@]}"
}
showUnmerged HEAD
Это не кажется особенно эффективным, но это работает и, насколько я знаю, оба for-each-ref
а также merge-base
сантехнические команды