Среди информации, представленной git help fetch, есть этот маленький пункт:
-p, --prune
After fetching, remove any remote-tracking branches which no longer exist on the remote.
Так что, возможно, git fetch -p это то что вы ищете?
РЕДАКТИРОВАТЬ: Хорошо, для тех, кто все еще обсуждает этот ответ через 3 года после факта, вот немного больше информации о том, почему я представил этот ответ ...
Во-первых, OP говорит, что они хотят «удалить также те локальные ветви, которые были созданы из тех удаленных ветвей [которые больше не находятся на удаленных]». Это не однозначно возможно в git. Вот пример.
Допустим, у меня есть репо на центральном сервере, и у него есть две ветви, называемые Aи B. Если я клонирую это репо в мою локальную систему, у моего клона будут вызываться локальные ссылки (пока не фактические ветки) origin/Aи origin/B. Теперь допустим, я делаю следующее:
git checkout -b A origin/A
git checkout -b Z origin/B
git checkout -b C <some hash>
Уместные факты: я по какой-то причине решил создать ветку в моем локальном репо, имя которой отличается от его источника, и у меня также есть локальный филиал, которого (пока) не существует в исходном репо.
Теперь предположим, что я удаляю как Aи Bветви на удаленный репозиторий и обновить свой локальный репозиторий ( git fetchв той или иной форме), что вызывает мои местные рефов origin/Aи origin/Bисчезнуть. Теперь, мой местный репо имеет три ветви еще, A, Z, и C. Ни у одного из них нет соответствующей ветки на удаленном репо. Два из них были «созданы из ... удаленных веток», но даже если я знаю, что когда-то была ветвь с именем Bисточника, у меня нет возможности узнать, что Zбыло создано изBпотому что он был переименован в процессе, вероятно, по уважительной причине. Таким образом, на самом деле, без какого-либо внешнего метаданных происхождения ветви записи процесса или человека, который знает историю, невозможно определить, какая из трех ветвей, если таковая имеется, предназначена для удаления ОП. Без какой-либо внешней информации, gitкоторая не поддерживается автоматически для вас,git fetch -p она настолько близка, насколько вы можете ее получить, и любой автоматический метод буквальной попытки запроса того, что запросил OP, рискует либо удалить слишком много веток, либо пропустить часть, которую OP иначе не получил бы. хочу удалить.
Существуют и другие сценарии, например, если я создаю три отдельные ветви origin/Aдля проверки трех разных подходов к чему-либо, а затем origin/Aухожу. Теперь у меня есть три ветви, которые, очевидно, не могут соответствовать всем по именам, но они были созданы из origin/A, и поэтому буквальная интерпретация вопроса ОП требует удаления всех трех. Однако это может быть нежелательно, если бы вы могли найти надежный способ сопоставить их ...