Як обрізати локальні гілки відстеження, які вже не існують на віддалених


768

За допомогою git remote prune originя можу видалити локальні гілки, які вже не знаходяться на пульті.

Але я також хочу видалити локальні гілки, які були створені з цих віддалених гілок (перевірка, якщо вони не занурені, було б непогано).

Як я можу це зробити?



1
Однолінійний, поперечний майданчик, не схожий на те, що кішка спала на вашій клавіатурі: npx git-removed-branches(сухий) або npx git-removed-branches --prune(реально). Ви повинні вже мати node.js встановлені. Деталі див. У відповідях нижче .
Крістіан Діаконеску

Відповіді:


891

Після обрізки можна отримати список віддалених гілок с git branch -r. Список гілок з їх відділенням віддаленого відстеження можна отримати за допомогою git branch -vv. Таким чином, використовуючи ці два списки, ви можете знайти віддалені гілки відстеження, яких немає у списку віддалених.

Цей рядок повинен робити хитрість (вимагає bashабо zshне працюватиме зі стандартною оболонкою Bourne):

git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d

Цей рядок отримує список віддалених гілок і передає його egrepчерез стандартний вхід. І фільтрує гілки, які мають гілку віддаленого відстеження (використовуючи git branch -vvта фільтруючи для тих, хто має origin), отримуючи перший стовпець цього виводу, який буде назвою гілки. Нарешті, передаючи всі назви гілок в команду видалення гілки.

Оскільки він використовує цю -dопцію, він не видалить гілки, які не були об'єднані у гілку, на якій ви знаходитесь, коли ви запускаєте цю команду.

Також пам’ятайте, що вам потрібно запустити git fetch --prune спочатку , інакше git branch -rвсе одно побачать віддалені гілки.


12
Це працювало для мене чудово. Якось, git fetch -pне завжди достатньо?
Стефан Хендрікс

16
На жаль, це не працює в Git Bash для Windows. sh.exe": cannot make pipe for process substitution: Function not implemented sh.exe": egrep -v -f /dev/fd/0: No such file or directory fatal: branch name required Будь-які ідеї?
Люддер

37
Щоб додати його як псевдонім:alias git-remove-untracked='git fetch --prune && git branch -r | awk "{print \$1}" | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk "{print \$1}" | xargs git branch -d'
bryant1410

125
Чи є якась запропонована команда для майбутнього випуску git, яка буде це робити? Ця команда виглядає так, як мій кіт був у мене на ноутбуці
Брон Девіс

5
використання git branch -Dв кінці команди працювало краще для нас, оскільки ми прагнемо скорочувати коміти на об'єднанні, що отримує The branch x is not fully mergedпомилки при запуску -d.
Матеус Гондім

430

Якщо ви хочете видалити всі локальні гілки, які вже об'єднані в головний, можна скористатись такою командою:

git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d

Більше інформації .


4
Працював ідеально, я думаю! Чи може хтось пояснити, якщо ця відповідь робить щось інакше, ніж прийнята відповідь?
Андрій

11
Незначне вдосконалення: використовуйте xargs -r git branch -dтак, щоб нічого не було запущено, якщо немає гілок для видалення. Зауважте, що -rпрапор може бути недоступний скрізь
Jacob Wang

8
Оскільки греп може не збігатися через кольори git:git branch --merged master --no-color | grep -v '^* master$' | xargs -n1 -r git branch -d
Майк Д

5
@NickRes, побачивши, як ви так красиво просили, git branch --merged masterперераховує гілки, об'єднані в головний, тоді середня частина grep виключає сам master (ми не хочемо видаляти master!), А остання частина xargs виконує git branch -d(видаляє гілку) на кожній з результати. Або ви могли просто прочитати посилання Більше інформації, надане у відповіді;)
jackocnr

14
Поліпшення: git branch --merged master | egrep -v '^\s*\*?\s*master$' | xargs git branch -d. Вихід з git v2.10.1 буде відображати "* master", коли майстер перевіряється. Я позбуваюсь майстра як зірочкою, так і без неї.
Естебан

162

Серед інформації, представленої 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, і тому буквальне тлумачення питання про ОП вимагало б усунення всіх трьох. Однак це може бути не бажаним, якщо ви навіть зможете знайти надійний спосіб їх узгодження ...


107
Це не видаляє локальні гілки, лише віддалені покажчики на гілки
Jaap

4
Він видаляє лише ці локальні гілки, яких немає у віддалених І ви ніколи не здійснювали перевірку на них.
Jarek Jakubowski

15
Ви повинні прочитати питання уважніше, як зазначає Яап. Люди, які голосують за цю відповідь, також повинні прочитати, про що йдеться насправді.
Søren Boisen

4
Так, це було насправді саме те, що я хотів зробити! @ SørenBoisen Я сподіваюсь, що за останні два роки ви встигли переглянути цю свою думку ... Якщо вміст, розміщений на SO, завжди повинен бути пов’язаний лише з тим, що інколи запитують дійсно заплутані ОП, ми видалимо багато інформації. Будь ласка, не припускайте вказувати людям, як вони можуть користуватися цим сайтом, крім офіційних інструкцій, і вони, очевидно, не заважають ортогональним, але корисним відповідям.
Фелікс Ганьон-Греньє

6
@ FélixGagnon-Grenier Ось моє питання з цією відповіддю: 1) Питання кришталево чисте, ОП явно не плутають. 2) Ця відповідь не зазначає, що вона не відповідає на питання! 3) Питання вже визначає спосіб обрізання гілок віддаленого відстеження, яких більше не існує, тому воно додає нульове значення.
Søren Boisen

117

Це видалить локальні гілки, на які були обрізані гілки віддаленого відстеження. (Переконайтесь, що ви на masterгілці!)

git checkout master
git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -d

Деталі:

  • git branch -vv відображає "пішло" для місцевих гілок, які віддалено обрізали.

    mybranch abc1234 [origin/mybranch: gone] commit comments
    
  • -dперевірить, чи був він об'єднаний ( -Dвидалить його незалежно)

    error: The branch 'mybranch' is not fully merged.
    

15
Можна навіть скоротити команду за допомогоюgit branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d
чиборг

4
Просто зазначивши, що ви повинні бути господарем, перш ніж робити це, тому що git branch -dпорівнює гілки проти HEAD.
Стів Беннетт

Відмінно! Я дивився і шукав це. Мені б хотілося, щоб я бачив вашу відповідь ще до того, як я зрозумів її самостійно. Врятувало б мене кілька хвилин. Ось моя інша відповідь: stackoverflow.com/questions/15661853/…
Карл Вільбур

1
Я закінчився подібним псевдонімом git, використовуваним cut, оскільки awk чомусь не спрацював:prunelocal = !sh -c \"git checkout -q master && git fetch -q --prune && git branch -vv | git grep ': gone]' | cut -d' ' -f3 | xargs git branch -d\"
Zitrax

3
О чувак ... мудрець вам ПОТРІБНО оновити свою відповідь, щоб сказати людям, що вони повинні бути майстрами. Просто зробив це з іншої галузі. @ stevebennet2 дякую за інформативний коментар
GrayedFox

53

Можна налаштувати Git для автоматичного видалення посилань на видалені віддалені гілки під час отримання:

git config --global fetch.prune true

Під час дзвінка git fetchабо git pullпісля нього посилання на видалені віддалені гілки автоматично видаляються.


5
це не видаляє локальні гілки, а лише посилання на них, правда?
Клінт Іствуд

@ClintEastwood Він видаляє лише посилання на віддалені гілки. Ви можете перелічити посилання на віддалені відділення, використовуючи git branch -r.
wedesoft

52

Є акуратний пакет NPM, який робить це для вас (і він повинен працювати на крос-платформі).

Встановіть його за допомогою: npm install -g git-removed-branches

А потім git removed-branchesпокаже вам всі застарілі локальні гілки та git removed-branches --pruneфактично видалити їх.

Більше інформації тут.


1
Це дійсно повинно мати більше результатів. Дякуємо, що полегшили життя, незалежно від платформи.
Шифрування

Зручне невелике розширення. Встановлено та працювало чудово в Windows 10. Маленька примітка: він не роз’єднує гілки як спрощені (помилка під час запуску --prune, так само, як називається гілка -d) .. вони, однак, не позначаються як такі в початковій список показаний.
користувач2864740

1
Це моя улюблена відповідь. npx git-removed-branchesпрацює як сон.
Дразісіль

так! Це повинно мати більше результатів! настільки просте та інтуїтивне рішення для новачків
Клі

Було б корисно дати огляд того, що інструмент робить з точки зору git.
ryanwebjackson

41

Рішення для Windows

Для Microsoft Windows Powershell:

git checkout master; git remote update origin --prune; git branch -vv | Select-String -Pattern ": gone]" | % { $_.toString().Trim().Split(" ")[0]} | % {git branch -d $_}

Пояснення

git checkout master перемикається на головну гілку

git remote update origin --prune чорнослив віддалені гілки

git branch -vvотримує багатослівний вихід з усіх гілок ( git reference )

Select-String -Pattern ": gone]" отримує лише записи, з яких вони були видалені з віддаленого.

% { $_.toString().Split(" ")[0]} отримати назву філії

% {git branch -d $_} видаляє гілку


Гарний приклад. альтернативно використовувати git remote prune origin, також select-string не схоже на останню версію git. Подумайте про використанняConvertFrom-String -TemplateContent
Берні Уайт

3
Схоже, остання версія git додає певні пробіли, тому Split не працює для отримання назви гілки. . Do .ToString () TRIM () Split ( »«) , і це буде.
Кріс Хайнс

Ось моя:git checkout master; git pull; git remote prune origin; git branch --merged | select-string -notmatch "master" | % { $_.toString().Trim().Split(" ")[0]} | % {git branch -d $_}
Омзіг,

@Omzig Що це робить інакше? Чи можете ви дати пояснення>
chris31389

@ chris31389, у мене є тяга туди, щоб отримати все, чого мені не вистачає у майстра, і я змінив гілку на --помічену, а не майстерну, я хочу переконатися, що я видаляю лише гілки --мігровані. Мені просто стає краще;)
Омзіг,

27

У ньому відображатимуться локальні гілки, віддалене відстеження яких видалено з віддаленого

$ git remote prune origin --dry-run

Якщо ви хочете скасувати відсилання цих локальних гілок із місцевих, які не відстежуються

$ git remote prune origin

19
Це не відповідає на питання, це те, що вже знала ОП.
Кен Вільямс

2
Я також погоджуюся, але коли ви шукаєте "Як обрізати локальні гілки відстеження, які вже не існують на віддаленому", це верхнє посилання, і ця відповідь відповідає заголовку (не якщо ви прочитали повний опис, про який йдеться), є причиною голосування :)
027

Це не видаляє місцеві гілки. Ще там після запуску цього
Сінь

@Xin спробуйте запустити команду без аргументу --dry-run, оскільки вона фактично не виконає команду, але покаже, що вона змінить.
Торстен Оджаперв

19

Як зазначає @tzacks ... для цього є зручний пакет npm. Просто зробіть:

npx git-removed-branches --prune

(Я б прокоментував, але недостатньо репутації)


1
Чудова. Жодних клопотів. Радий, що це була повна відповідь!
Ден

1
Це має бути вгорі. Працює і в Windows.
tomtastico

14

Якщо ви використовуєте Windows та Powershell, ви можете скористатись наведеним нижче, щоб видалити всі локальні гілки, які були об'єднані у поточну перевірену гілку:

git branch --merged | ? {$_[0] -ne '*'} | % {$_.trim()} | % {git branch -d $_}

Пояснення

  • Перераховує поточну гілку та гілки, які були об’єднані в неї
  • Фільтрує поточну гілку
  • Очищає будь-які провідні чи кінцеві пробіли з gitвиводу для кожної залишкової назви гілки
  • Видаляє об'єднані місцеві гілки

git branch --mergedСпершу варто запуститись саме для того, щоб переконатися, що він лише видалить те, що ви очікуєте.

(Перенесено / автоматизовано з http://railsware.com/blog/2014/08/11/git-housekeeping-tutorial-clean-up-outdated-branches-in-local-and-remote-repositories/ .)


10

Ще коротший і безпечніший одноколісний:

git branch -d $(git branch --merged | cut -c 3- | grep -v master)

Перш ніж запустити, обов'язково оформити замовлення на гілку, яка ще не об'єднана. Тому що ви не можете видалити гілку, у якій ви зараз зареєстровані.


3
це також видалить вашого "господаря"?
dcsan

2
Якщо ви зараз зареєструвались у майстра, то ні, інакше так
FelikZ

1
Щоб пропустити майстра, ви можете просто перейти на греп і вибрати обернену, як - git branch -d $(git branch --merged | cut -c 3- | grep -v master)
mozillalives

Це небезпечно, і хтось у майбутньому несвідомо видалить свою головну гілку
jasonseminara

1
@jasonseminara #dcsan Я оновив фрагмент, тому він пропускає головну гілку. #mozillalives дякую
FelikZ

9

Я хотів щось, що очистить усі локальні гілки, які відстежували віддалену гілку, у тому місці origin, де віддалена гілка була видалена ( gone). Я не хотів видаляти локальні гілки, які ніколи не були налаштовані для відстеження віддаленої гілки (тобто: мої місцеві гілки розробників). Крім того, я хотів простий одноразовий лайнер, який просто використовує git, або інші прості інструменти CLI, а не писати спеціальні сценарії. Я в кінцевому підсумку використав трохи grepта awkзробив цю просту команду, а потім додав її як псевдонім у моєму ~/.gitconfig.

[alias]
  prune-branches = !git remote prune origin && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D

Ось git config --global ...команда для того, щоб легко додати це як git prune-branches:

git config --global alias.prune-branches '!git remote prune origin && git branch -vv | grep '"'"': gone]'"'"' | awk '"'"'{print $1}'"'"' | xargs -r git branch -d'

ПРИМІТКА: Використання -Dпрапора git branchможе бути дуже небезпечним. Отже, в команді config вище я використовую -dпараметр, git branchа не -D; Я використовую -Dв моїй фактичній конфігурації. Я використовую, -Dтому що я не хочу чути, як Гіт скаржиться на незанурені гілки, я просто хочу, щоб вони пішли. Можливо, ви хочете і цю функціональність. Якщо так, просто використовуйте -Dзамість -dцього кінця команду config.


8

Щоб видалити віддалені гілки:

$git remote prune origin

Щоб видалити локальні гілки, які вже об'єднані:

$git branch -D $(git branch --merged)

Працює для мене. Дякую.
AndroidRuntimeException

2
(git branch --merged) також повертає для мене "master". І інші гілки, які не видалено на пульті.
Том Г

8
Це видалило мою головну гілку.
Грег

5

Здається, не існує надійного однолінійного вкладиша, занадто багато крайових випадків (наприклад, гілка, що має "master" як частину своєї назви тощо). Найбезпечнішими є такі дії:

  1. git branch -vv | grep 'gone]' > stale_branches.txt
  2. переглянути файл і видалити рядки для гілок, які ви хочете зберегти (наприклад, головна гілка!); вам не потрібно редагувати вміст жодного рядка
  3. awk '{print $1}' stale_branches.txt | xargs git branch -d

5

На основі відповідей вище, я використовую цей коротший вкладиш:

git remote prune origin | awk 'BEGIN{FS="origin/"};/pruned/{print $2}' | xargs -r git branch -d

Крім того, якщо ви вже обрізали і маєте місцеві звисаючі гілки, то це очистить їх:

git branch -vv | awk '/^ .*gone/{print $1}' | xargs -r git branch -d

1
Не працює, якщо /в них є назви вашої філії
theicfire

4

не впевнений, як зробити це все одразу, але git git branch -d <branchname>видалить локальну гілку ТІЛЬКИ, якщо вона повністю об'єднана. Зверніть увагу на малі г.

git branch -D <branchname> (зверніть увагу на столицю D) буде видалено локальну філію незалежно від стану її об'єднання.


У Windows інші відповіді для мене не спрацювали. Використовуючи цю відповідь за допомогою простого перемикача -D це зробив (навіть якщо гілка вже була "видалена").

Чи можемо ми зробити це для всіх відділень одночасно?
Теоман шипахі

3

Ви можете використовувати цю команду:

git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d

Git Clean: видалення вже об'єднаних гілок, включаючи розбиття команд


Вам не потрібно відфільтровувати жодні гілки (колишній майстер). Якщо це "об'єднано", то це просто означає, що він видалить вашу локальну копію, але "git checkout dev" створить локальну гілку з віддаленого, якщо її ще немає
csga5000

Але список місцевих відділень все ще існує, навіть якщо вони об'єднані. Ця команда полягає у видаленні цих гілок, які були видалені з віддаленого.
sendon1982,

зірочка на початку означає поточну гілку, коли запустити цю команду на іншій гілці не буде добре
OzzyCzech

2

На підставі відповідей вище, я придумав це рішення в одному рядку:

git remote prune origin; git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d

2

Використовуючи варіант у відповіді на @ wisbucky, я додав у свій ~/.gitconfigфайл таке псевдонім :

pruneitgood = "!f() { \
    git remote prune origin; \
    git branch -vv | perl -nae 'system(qw(git branch -d), $F[0]) if $F[3] eq q{gone]}'; \
}; f"

Завдяки цьому, просто git pruneitgoodочистить локальні та віддалені гілки, які більше не потрібні після злиття.


2

Версія Powershell від git branch --merged master | grep -v '^[ *]*master$' | xargs git branch -d

git branch --merged master | %{ if($_ -notmatch '\*.*master'){ git branch -d "$($_.Trim())" }}

Це дозволить видалити всі локальні гілки, які були об'єднані в головний, поки ви знаходитесь на головній гілці .

git checkout master для перемикання.


1

Варіант Шлейса для мене не працює (Ubuntu 12.04), тому дозвольте запропонувати свої (чіткі та блискучі варіанти :):

Варіант 1 (я вважаю за краще цей варіант):

git for-each-ref --format='%(refname:short) %(upstream)' refs/heads/ | awk '$2 !~/^refs\/remotes/' | xargs git branch -D 

Варіант 2:

а. Пробіг:

comm -23 <( git branch | grep -v "/" | grep -v "*" | sort ) <( git br -r | awk -F '/' '{print $2}' | sort ) | awk '{print "git branch -D " $1}'

б. Видалити гілки:

comm -23 <( git branch | grep -v "/" | grep -v "*" | sort ) <( git br -r | awk -F '/' '{print $2}' | sort ) | xargs git branch -D

1

Далі йде адаптація відповіді @ wisbucky для користувачів Windows:

for /f "tokens=1" %i in ('git branch -vv ^| findstr ": gone]"') DO git branch %i -d

Я використовую posh-git і, на жаль, PS не подобається голий for, тому я створив звичайний сценарій команд 'ol на ім'я PruneOrphanBranches.cmd:

@ECHO OFF
for /f "tokens=1" %%i in ('git branch -vv ^| findstr ": gone]"') DO CALL :ProcessBranch %%i %1

GOTO :EOF

:ProcessBranch
IF /I "%2%"=="-d" (
    git branch %1 %2
) ELSE (
    CALL :OutputMessage %1
)
GOTO :EOF

:OutputMessage
ECHO Will delete branch [%1] 
GOTO :EOF

:EOF

Викличте його без параметрів, щоб побачити список, а потім зателефонуйте йому за допомогою "-d", щоб виконати фактичне видалення або "-D" для будь-яких гілок, які не повністю об'єднані, але які ви хочете видалити.


Для мене це не спрацювало, якимось чином ( :або : з пробілом) у тому, findstrщо він щоразу відповідав усім - я майже видалив майстра. Однак, використовуючи регулярний вираз, спрацювало чудово:git branch -vv ^| findstr /R " \[origin/[0-9]+: gone\] "
Джош

1

Спробуйте це в git bash, щоб отримати та обрізати посилання на видалені гілки, а потім обріжте локальні гілки, які відстежували видалені:

git fetch -p && git branch -d `git branch -vv | grep ': gone]' | awk '{print $1}' | xargs`

Не забудьте спочатку перевірити гілку, яку не буде видалено, щоб не заблокувати видалення гілки.



0

Я зайшов на цю сторінку, шукаючи відповідь "як видалити локально перевірені гілки, у яких більше немає гілки"

Мені також було байдуже, чи вже місцева гілка була об'єднана чи ні, оскільки трубопровід git branch -dбуде просто попереджати замість видалення неперевірених місцевих гілок.

git branch -a | grep origin | tr -s ' ' | cut -d '/' -f3 | egrep -v -f /dev/fd/0 <(git branch -a | grep -v origin) | grep branch_prefix_that_I_care_about | xargs git branch -d

# translation
# git branch -a | grep origin | tr -s ' ' | cut -d '/' -f3
## this finds all remote branch names minus the "remote/origin/" part
#
# <(git branch -a | grep -v origin)
## this finds all local branch names and redirects it into the previous command
#
# egrep -v -f /dev/fd/0 STUFF
## this is doing some weird magic that I'm grokking as "take the set difference from whatever was piped in"
#
#
# overall translation: (STUFF TO CONSIDER) | egrep magic <(STUFF TO REMOVE FROM CONSIDERATION) | do cool things with resulting stuff


0

Ось моє рішення:

git fetch -p
git branch -vv | grep ": gone" | awk '{print $1}' | xargs git branch -d
  • -p - це видалити будь-які посилання на віддалене відстеження, яких більше немає на віддаленому. Тому перший крок видалить посилання на віддалені гілки.

  • -vv призначений для відображення sha1 та введення рядка теми для кожної голови разом із відношенням до верхньої гілки (за наявності). 2-й крок отримає всі локальні гілки, а команда grep відфільтрує гілки, які були видалені.



-3

Я майже впевнений, git remote prune originщо ви цього хочете.

Ви можете запустити його так, git remote prune origin --dry-runщоб побачити, що він буде робити, не вносячи жодних змін.


12
Це фактично не видаляє локальну гілку.
Тайтай

-17

Використовуєте графічний інтерфейс? Процедура вручну, але швидка і проста.

$ git gui

Виберіть "Відділення -> Видалити". Ви можете вибрати декілька гілок за допомогою клавіші ctrl (Windows) та видалити їх.


Смішно, як негативно сприймається ця відповідь. Цілком справедливий підхід IMO, якщо вам подобається GUI.
serraosays
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.