Коротко;
- Як я можу видалити віддалені кілька об'єднаних дистанційних?
Більше тла;
У мене є git repo з десятками дистанційних, які були об'єднані в майстер. Я можу видалити ці віддалені по одному, використовуючи:
git push --delete origin myBranch-1234
Однак це повільний і виснажливий процес для всіх дистанційних. Тому я намагаюся цю команду:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
перелічує всі об’єднані пульти.
grep origin
вказує команді включити походження.
grep -v master
повідомляє команду виключити майстер.
xargs git push origin --delete
вказує команді видалити список віддалених.
Я разом із цим очікую, що вони зберуть усі об'єднані пульти та видалять їх.
Коли я запускаю вищезгадану команду, я отримую наступне для кожного об'єднаного віддаленого пристрою;
error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc
Однак ці пульти існують, і я можу оглянути кожен з них. Багато сайтів і люди рекомендують мені запустити git fetch --prune
очищення пропущених посилань. Це нічого не робить, тому що всі ці пульти існують.
Тож я прошу вас, шановний обмін стеками;
- Чому я можу видалити один пульт, але не багато?
- Чи правильна моя команда?
Я думаю, що я пропускаю щось маленьке. Кожен раз, коли я це досліджую, здається, що я роблю це правильно, але я отримую вищезазначені помилки.
--prune
? На мою думку, це досить оману