Jak usunąć origin / master w Git

10

Nie mogę usunąć origin/masterz mojego serwera. Nie mam pojęcia dlaczego.

Zrzut ekranu mojego terminalu

Komunikat o błędzie jest następujący

remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error: 
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error: 
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To [email protected]:/export/home/a/elabshare/git/ID-check.git
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to '[email protected]:/export/home/a/elabshare/git/ID-check.git'

Nie, nie używam Github .

Atcold
źródło
1
Dlaczego chcesz to zrobić? Czy są jeszcze inne oddziały?
Daniel B
Rzeczywiście istnieją inne gałęzie (sprawdź link do obrazu, czy mógłbyś go dla mnie wyświetlić, proszę?). Musieliśmy się opierać masteri zrobiliśmy to na gałęzi doczesnej, która teraz powinna się stać master. Jedynym problemem jest to, że nie wiem, dlaczego nie mogę zabić mistrza na serwerze.
Atcold
2
Może nie odpowiedź szukasz, ale można wymusić popchnąć rebased masteraby origin/masterskutecznie zastępując starą z nową.
SlightlyCuban
Oprócz komunikatu o błędzie opublikuj polecenie, którego używasz.
Kyralessa
@ Kyralessa, sprawdź zrzut ekranu.
Atcold

Odpowiedzi:

7

Ciekawostka: nawet zdalne repozytoria znajdują się w oddziale. Zostajesz odrzucony, ponieważ próbujesz usunąć gałąź, którą twoje pochodzenie obecnie „wypisało”.

Jeśli masz bezpośredni dostęp do repozytorium, możesz po prostu otworzyć katalog reporatora powłoki i użyć starego, dobrego, git branchaby zobaczyć, jakie jest pochodzenie gałęzi. Aby zmienić go na inny oddział, musisz użyć git symbolic-ref HEAD refs/heads/another-branch.

Jeśli korzystasz z usługi takiej jak Github lub Gitorious, będziesz musiał użyć interfejsu użytkownika, który umożliwia wprowadzenie zmiany (zobacz tę odpowiedź, jak to zrobić w typowych narzędziach).

Nieznacznie Kuban
źródło
Niesamowite, to działało i dało mi szansę dowiedzieć się więcej na temat refsw Git ! Dziękuję Ci bardzo! (Tak, wiedziałem o tym, jak sobie z tym poradzić na Githubie , ale nie na naszym osobistym serwerze).
Atcold
12

Zamiast faktycznie usunąć master z serwera, możesz go zastąpić w następujący sposób:

git push origin otherbranch:master -f

To zastąpi master zawartością otherbranch, ale nadal będzie nazywać się master na pilocie. A potem możesz sprawdzić master jako master w swoim lokalnym.

Kyralessa
źródło
Ok dzięki! Wiem, że mogę wymuszać różne rzeczy, ale zastanawiałem się dokładnie, dlaczego nie mogłem usunąć mastergałęzi, a zaakceptowana odpowiedź wyjaśnia, dlaczego.
Atcold
1
+1. To był jedyny sposób, w jaki mogłem usunąć złe pierwsze zatwierdzenie na pilotach / origin / master.
ctn