Серед інформації, представленої git help fetch
, є цей невеликий предмет:
-p, --prune
After fetching, remove any remote-tracking branches which no longer exist on the remote.
Отже, можливо, git fetch -p
це те, що ви шукаєте?
EDIT: Добре, для тих, хто все ще обговорює цю відповідь через 3 роки після факту, ось трохи більше інформації про те, чому я представив цю відповідь ...
По-перше, ОП каже, що вони хочуть "видалити також ті локальні гілки, які були створені з тих віддалених гілок [які вже не є на віддалених]". Це однозначно неможливо в Росії 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
є приблизно такою ж близькою, і будь-який автоматичний метод для буквальної спроби того, що запитував ОП, ризикує або видалити занадто багато гілок, або пропустити частину, яка в іншому випадку ОП хочу видалити
Є й інші сценарії, наприклад, якщо я створю три окремі гілки origin/A
для тестування трьох різних підходів до чогось, а потім origin/A
відходить. Зараз у мене є три гілки, які, очевидно, не можуть відповідати всім іменам, але вони були створені origin/A
, і тому буквальне тлумачення питання про ОП вимагало б усунення всіх трьох. Однак це може бути не бажаним, якщо ви навіть зможете знайти надійний спосіб їх узгодження ...