Stworzyłem wiele oddziałów w jednym z naszych repozytoriów. Te gałęzie służą do testowania, zanim zostaną wyciągnięte do mastera. Teraz widzę ich wiele na liście i nigdy więcej z niej nie skorzystamy. Jak usunąć te gałęzie bezpośrednio do Bitbucket?
Odpowiedzi:
Jeśli gałęzie są tylko lokalne, możesz użyć -d, jeśli gałąź została scalona, na przykład
git branch -d branch-name
Jeśli gałąź zawiera kod, którego nigdy nie planujesz scalać, użyj zamiast tego -D .
Jeśli gałąź znajduje się w repozytorium upstream (na Bitbucket), możesz usunąć zdalne odwołanie za pomocą
git push origin :branch-name
Ponadto, jeśli jesteś w witrynie Bitbucket, możesz usunąć wypchnięte gałęzie, przechodząc do karty Gałęzie funkcji w obszarze Zatwierdzenia w witrynie. Znajdziesz tam ikonę wielokropka. Kliknij to, a następnie wybierz Usuń gałąź . Tylko upewnij się, że chcesz tam porzucić wszystkie zmiany!
Aby usunąć oddział z Bitbucket,
Oprócz odpowiedzi udzielonej przez @Marcus możesz teraz usunąć zdalny oddział poprzez:
git push [remote-name] --delete [branch-name]
w Bitbucket przejdź do gałęzi w menu po lewej stronie.
Mogłem usunąć większość swoich gałęzi, ale jeden wyglądał tak i nie mogłem go usunąć:
Okazało się, że ktoś siedział Branch permissions
pod Settings
i stamtąd niesprawdzony Allow deleting this branch
. Mam nadzieję, że to może komuś pomóc.
Aktualizacja : Gdzie znajdują się ustawienia z pytania w komentarzu. Wejdź do repozytorium, które chcesz edytować, aby uzyskać menu. Aby to zmienić, możesz potrzebować uprawnień administratora.
Jeśli używasz Pycharm IDE do programowania i już dodałeś do niego Git. możesz bezpośrednio usunąć zdalną gałąź z pycharm. Z paska narzędzi VCS -> Git -> Branże -> Wybierz gałąź -> i Usuń . Usunie go ze zdalnego serwera git.
Napisałem ten mały skrypt, gdy liczba gałęzi w moim repozytorium przekroczyła kilkaset. Nie wiedziałem o innych metodach (z CLI), więc zdecydowałem się zautomatyzować to za pomocą selenu. Po prostu otwiera witrynę Bitbucket, przechodzi do oddziałów, przewija stronę do końca i klika menu opcji każdego oddziału -> klika przycisk Usuń -> klika Tak. Można go dostroić, aby zachować ostatnie N (100 - domyślnie) gałęzi i pomijać gałęzie o określonych nazwach (master, develop - default, może być więcej). Jeśli to ci odpowiada, możesz spróbować w ten sposób.
https://github.com/globad/remove-old-branches
Wszystko, czego potrzebujesz, to sklonować repozytorium, pobrać odpowiednią wersję Chrome-webdrivera, wprowadzić kilka stałych, takich jak URL, do repozytorium i uruchomić skrypt.
Kod jest wystarczająco prosty do zrozumienia. Jeśli masz jakieś pytania, napisz komentarze / utwórz problem.
Spróbuj tego polecenia, wyczyści wszystkie gałęzie, które zostały scalone z develop
gałęzią.
for i in `git branch -r --merged origin/develop| grep origin | grep -v '>' \
| grep -v master | grep -v develop | sed -E "s|^ *origin/||g"`; \
do \
git push origin $i --delete; \
done
W Android Studio opcje w prawym rogu IDE:
Jeśli lubisz zabawę, możesz po prostu przejść do strony z listą swoich oddziałów (na przykład połączonych) i po prostu uruchomić w konsoli javascript:
document.querySelectorAll('tr td div a:first-child').forEach(function(item) { fetch('https://bitbucket.org/snippets/new?owner=<yourprofilenick>', {'credentials': 'same-origin'}).then((response) => {return response.text()}).then(function(string) { return /'csrfmiddlewaretoken' value='(.*)'/g.exec(string)[1] }).then(function(csrf) { if (!~item.innerText.indexOf('/')) return;
fetch(`https://bitbucket.org/!api/2.0/repositories/<your_organization_path>/refs/branches/${item.innerText}`, {headers: {"x-csrftoken": csrf}, credentials: "same-origin", method: 'DELETE'}).then(() => console.log(`${item.innerText} DELETED!`)) }) })
<yourprofilenick>
swój nick BitBucket<your_organization_path>
ścieżką organizacyjnąNajpierw potrzebujemy strony z tokenem CSRF w źródle strony, więc wybieram:
https://bitbucket.org/snippets/new?owner=<yourprofilenick>
Następnie dla każdej gałęzi (na liście gałęzi) pobiera token CSRF i usuwa tę gałąź.
Pamiętaj, aby zapobiec wrażliwym gałęziom przed usunięciem w ustawieniach repozytorium.
NIE usunie głównej gałęzi.
Musisz być zalogowany.
Usuwa tylko gałęzie widoczne na tej stronie (więc aby usunąć pozostałe gałęzie musisz przejść do następnej strony).