W skrócie;
- Jak mogę usunąć zdalne wiele połączonych pilotów?
Więcej informacji;
Mam repozytorium git z dziesiątkami pilotów, które zostały połączone w master. Mogę usuwać te piloty pojedynczo, używając:
git push --delete origin myBranch-1234
Jednak jest to powolny i żmudny proces dla wszystkich pilotów. Więc próbuję tego polecenia:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
wyświetla listę wszystkich połączonych pilotów.
grep origin
informuje polecenie, aby zawierało źródło.
grep -v master
informuje polecenie, aby wykluczyć wzorzec.
xargs git push origin --delete
informuje polecenie, aby usunąć listę pilotów.
Oczekuję, że wszystko razem zgromadzi wszystkie scalone piloty i je usunie.
Kiedy uruchamiam powyższe polecenie, otrzymuję następujące informacje dla każdego połączonego pilota;
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
Jednak te piloty istnieją i mogę sprawdzić każdy z nich. Wiele witryn i osób poleca mi bieganie w git fetch --prune
celu usunięcia brakujących odniesień. To nic nie robi, ponieważ wszystkie te piloty istnieją.
Więc proszę cię, droga giełdzie stosów;
- Dlaczego mogę usunąć jednego pilota, ale nie wielu?
- Czy moje polecenie jest poprawne?
Myślę, że brakuje mi czegoś małego. Za każdym razem, gdy to badam, wydaje się, że robię to poprawnie, ale otrzymuję powyższe błędy.
--prune
? Moim zdaniem to dość mylące