Це питання не вирішено (поки що), принаймні, не легко / без написання сценаріїв: див. Цю публікацію у списку розсилки git від Junio C Hamano, що роз'яснює ситуацію та пропонує заклик до простого рішення.
Основне міркування полягає в тому, що вам це не потрібно:
З git, який не є давнім (тобто v1.5.0 або новішим), немає причин мати місцеві "dev", які суто відслідковують віддалений. Якщо ви хочете лише переглядати і переглядати, ви можете перевірити гілку віддаленого відстеження безпосередньо на відокремленій ГОЛОВІ з " git checkout origin/dev
".
Це означає, що єдині випадки, коли нам потрібно зробити це зручним для користувачів, - це обробляти ці локальні гілки, які "відстежують" віддалені, коли у вас є місцеві зміни або коли ви плануєте їх мати.
Якщо у вас є місцеві зміни на "dev", які позначені для відстеження видалення "dev", і якщо ви знаходитесь на гілці, відмінній від "dev", ми не повинні нічого робити після " git fetch
" оновлення віддаленого відстеження "dev" . Це все одно не швидко
Заклик до рішення полягав у варіанті чи зовнішньому скрипті, щоб обрізати локальні гілки, які слідують за гілками віддаленого відстеження, а не підтримувати їх у курсі швидкого переадресації, як вимагається оригінальний плакат.
То як щодо " git branch --prune --remote=<upstream>
", що переходить на місцеві відділення, і якщо
(1) це не поточна галузь; та
(2) позначено для відстеження деякої гілки, взятої з <upstream>; і
(3) він не має жодних зобов'язань самостійно;
тоді видалити цю гілку? " git remote --prune-local-forks <upstream>
" також добре; Мені все одно, яка команда настільки реально реалізує цю функцію.
Примітка: станом на git 2.10 такого рішення не існує. Зауважте, щоgit remote prune
підкомандаgit fetch --prune
стосується видалення гілки віддаленого відстеження для гілки, якої вже немає на віддаленому, а не про видалення локальної гілки, яка відстежує гілку віддаленого відстеження (для якої відділення віддаленого відстеження - це гілка вище за течією).