Wie lösche ich origin / master in Git?

19907
Atcold

Ich kann nicht origin/mastervon meinem Server entfernen . Keine Ahnung warum.

Screenshot meines Terminals

Die Fehlermeldung lautet wie folgt

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 acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git ! [remote rejected] master (deletion of the current branch prohibited) error: failed to push some refs to 'acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git' 

Nein, ich bin nicht mit Github .

9
Warum möchtest du das tun? Gibt es noch andere Niederlassungen? Daniel B vor 10 Jahren 1
In der Tat gibt es noch andere Zweige (überprüfen Sie den Link zum Bild. Könnten Sie es mir bitte zeigen?). Wir mussten "master" zurückweisen, und wir machten es auf einem zeitlichen Zweig, der jetzt "master" werden sollte. Das einzige Problem ist, dass ich nicht weiß, warum ich Master auf dem Server nicht töten kann. Atcold vor 10 Jahren 0
Vielleicht nicht die Antwort, die Sie suchen, aber Sie könnten den neu basierten "Master" mit Gewalt nach "Ursprung / Master" schieben und den alten durch den neuen ersetzen. SlightlyCuban vor 10 Jahren 2
Bitte posten Sie zusätzlich zu der Fehlermeldung den von Ihnen verwendeten Befehl. Kyralessa vor 10 Jahren 0
@Kyralessa, schau dir den Screenshot an. Atcold vor 10 Jahren 0
@SlightlyCuban, ich habe versucht, * erzwungenes * Zeug zu vermeiden und stattdessen einen "sauberen" Weg zu finden :) Atcold vor 10 Jahren 0
Sie sind nicht der einzige, den ich mit der Vorstellung gesehen habe, dass "Gewalt" eine schreckliche oder unordentliche Sache ist. Es wird uns immer gesagt, Dinge nicht zu erzwingen. Wenn Sie einen Türknopf erzwingen, kann er beschädigt werden. Das Erzwingen einer Schraube könnte den Kopf abreißen. Das Erzwingen von Git verursacht jedoch keinen Schaden, solange Sie wissen, welche Commits es ersetzt. Sie werden Git nicht durcheinander bringen oder es kaputt machen oder es nicht funktionieren lassen. "-F" muss nur gesagt werden: "Ich merke, dass ich dabei die Arbeit verlieren könnte, aber ich weiß, was ich mache, also mach weiter und mache es trotzdem." Kyralessa vor 10 Jahren 0
@Atcold, normalerweise empfehle ich das Forcen nicht, aber es hörte sich an, als würden Sie "Master" auf einen anderen Zweig zeigen. In diesem Fall hätten `--force` und` delete && push` das gleiche Endergebnis. Der einzige Unterschied: Löschen wäre ein zweistufiger Vorgang, der sauberer sein könnte, wenn Sie nicht unmittelbar danach vorgehen wollten. SlightlyCuban vor 10 Jahren 0
@SlightlyCuban, meine erste Sorge bestand darin zu verstehen, warum sich meine Maschine nicht nach meinem Willen verbiegt. Jetzt bin ich wieder ihr Meister! :) Atcold vor 10 Jahren 0

2 Antworten auf die Frage

12
Kyralessa

Anstatt Master wirklich vom Server zu entfernen, können Sie ihn folgendermaßen ersetzen:

git push origin otherbranch:master -f 

Das wird master durch den Inhalt von otherbranch ersetzen, aber es wird immer noch Master auf der Fernbedienung genannt. Und dann können Sie Master als Master in Ihrem lokalen Bereich auschecken.

OK danke! Ich weiß, dass ich Sachen zwingen kann, aber ich habe mich gefragt, warum ich den 'Master'-Zweig nicht entfernen konnte. Die akzeptierte Antwort erklärt, warum. Atcold vor 10 Jahren 0
+1. Nur so konnte ich ein schlechtes erstes Commit für Remotes / Origin / Master löschen. ctn vor 8 Jahren 1
5
SlightlyCuban

Interessante Tatsache: Selbst entfernte Repositories befinden sich in einer Zweigstelle. Sie werden abgelehnt, weil Sie versuchen, den Zweig zu löschen, den Ihr Ursprung gerade "ausgecheckt" hat.

Wenn Sie direkten Zugriff auf das Repo haben, können Sie einfach ein Shell-Bare-Re-Pore-Verzeichnis öffnen und mit "good old" feststellen, git branchauf welchem ​​Zweig sich der Ursprung gerade befindet. Um es in einen anderen Zweig zu ändern, müssen Sie verwenden git symbolic-ref HEAD refs/heads/another-branch.

Wenn Sie einen Dienst wie Github oder Gitorious verwenden, müssen Sie die Benutzeroberfläche verwenden, die das Tool Ihnen zur Verfügung stellt, um die Änderung vorzunehmen (siehe diese Antwort in den üblichen Tools).

Toll, es hat funktioniert und es gab mir die Chance, mehr über `refs` in * Git * zu erfahren! Vielen Dank! (Ja, ich wusste, wie ich mit * Github * umgehen sollte, aber nicht mit unserem persönlichen Server.) Atcold vor 10 Jahren 0