Wie entferne ich einen Zweig lokal?

159

Ich habe einen Master- und einen Dev-Zweig in meinem Repository. Ich möchte den Hauptzweig von meinem Computer entfernen, damit ich mich nicht versehentlich darauf einlasse (es ist passiert ..).

Hier gibt es Fragen zum lokalen und Remote- Löschen von Zweigen , aber ich konnte nicht herausfinden, wie nur ein Zweig lokal gelöscht werden kann.

Eine Antwort sagte, dies zu verwenden:

git branch -d local_branch_name

Aber ich habe es versucht und der Zweig wird immer noch in der GitHub-Anwendung angezeigt.

Nate
quelle
Was ist die Ausgabe von diesem Befehl? Auf welchem ​​Zweig bist du? Wie erscheint es in der Konsole?
SLaks
@SLaks Ich hatte einen Typ in meiner Frage. In der Konsole heißt es tatsächlich, dass der Zweig gelöscht wurde, aber in der GitHub-Anwendung (auch nach dem Neustart) sind der Zweig und das Commit weiterhin sichtbar. Die Ausgabe istDeleted branch master (was e8a8e29).
Nate
GitHub für Windows zeigt auch entfernte Zweige
SLaks
@SLaks Wenn ich also nach dem lokalen Löschen des Zweigs in der GitHub für Windows-Anwendung darauf klicke, wird er nur erneut geklont? Ich möchte verhindern, dass ich direkt Änderungen an der Hauptniederlassung vornehmen kann.
Nate

Antworten:

114

Ich denke , (basierend auf Ihren Kommentaren) , dass ich verstehe , was Sie tun möchten: Sie Ihre lokale Kopie des Repository wollen die gewöhnliche lokale Niederlassung haben , weder master, noch die Fernverfolgung Zweig origin/master, auch wenn das Repository geklont-the Github eine - hat einen lokalen Zweig master, den Sie nicht aus der Github-Version löschen möchten.

Sie können dies tun, indem Sie den Remote-Tracking-Zweig lokal löschen. Dieser wird jedoch jedes Mal wieder angezeigt, wenn Sie Ihren Git bitten, Ihr lokales Repository mit dem Remote-Repository zu synchronisieren, da Ihr Git den Git fragt, welche Zweige Sie haben sagt "Ich habe master", damit Ihr Git (neu) origin/masterfür Sie erstellt, damit Ihr Repository das hat, was es hat.

So löschen Sie Ihren Remote-Tracking-Zweig lokal über die Befehlszeilenschnittstelle:

git branch -d -r origin/master

Aber auch hier wird es nur bei erneuten Synchronisierungen wieder angezeigt. Es ist auch möglich, dies zu besiegen (durch remote.origin.fetchManipulation), aber Sie sind wahrscheinlich besser dran, nur diszipliniert genug zu sein, um nicht masterlokal zu erstellen oder zu ändern .

torek
quelle
99

Erzwingen Löschen des lokalen Zweigs:

$ git branch -D <branch_name>

[ HINWEIS ]:

"-D" ist die Option zum Löschen erzwingen.


Benyamin Jafari
quelle
6
Wenn ich einen lokalen Zweig lösche, für den ein Upstream festgelegt wurde, und dann einen normalen Push ausführe, wird der Remote-Zweig nicht gelöscht, oder?
Betankt durch Kaffee
1
@FueledByCoffee Hier ist die Antwort auf diese Frage
Benyamin Jafari
17

Soweit ich das ursprüngliche Problem verstehen kann, haben Sie versehentlich Commits zum lokalen Master hinzugefügt und diese Änderungen noch nicht vorgenommen. Jetzt möchten Sie Ihre Änderungen abbrechen und hoffen, Ihre lokalen Änderungen zu löschen und einen neuen Hauptzweig aus dem Remote-Zweig zu erstellen.

Sie können einfach Ihre Änderungen zurücksetzen und den Master vom Remote-Server neu laden:

git reset --hard origin/master
Eugene Kaurov
quelle
13

Die Github-Anwendung für Windows zeigt alle Remote-Zweige eines Repositorys an. Wenn Sie den Zweig lokal mit gelöscht haben $ git branch -d [branch_name], ist der Remote-Zweig weiterhin in Ihrem Github-Repository vorhanden und wird unabhängig von der Windows-Github-Anwendung angezeigt.

Wenn Sie den Zweig vollständig löschen möchten (auch remote), verwenden Sie den obigen Befehl in Kombination mit $ git push origin :[name_of_your_new_branch]. Warnung: Dieser Befehl löscht alle vorhandenen Zweige und kann zu Codeverlust führen. Seien Sie vorsichtig, ich glaube nicht, dass Sie dies versuchen.

Jedes Mal, wenn Sie die lokalen Zweigänderungen löschen, wird der Remote-Zweig weiterhin in der Anwendung angezeigt. Wenn Sie keine weiteren Änderungen vornehmen möchten, ignorieren Sie diese einfach und klicken Sie nicht darauf. Andernfalls können Sie das Repository klonen. Wenn Sie weitere Fragen hatten, lassen Sie es mich bitte wissen.


quelle
1

Sie müssen in einen anderen Zweig wechseln und das Gleiche versuchen.

Git-Zweig -d

Kumar Vaduganathan
quelle
1
Soll das eine Antwort sein? Oder eine Klärungsfrage? Oder eine einfache Frage? Es ist so kurz, dass ich es nicht sagen kann. Möchten Sie näher darauf eingehen?
Yunnosch
0

Anhand Ihrer Tags gehe ich davon aus, dass Sie Github verwenden. Warum erstellen Sie nicht einige Zweigschutzregeln für Ihren Hauptzweig? Auf diese Weise wird es abgelehnt, selbst wenn Sie versuchen, auf Master zu drücken.

1) Gehen Sie auf Github zur Registerkarte "Einstellungen" Ihres Repos.

2) Klicken Sie im linken Menü auf "Zweige".

3) Klicken Sie auf "Regel hinzufügen".

4) Geben Sie 'master' für ein Verzweigungsmuster ein.

5) Aktivieren Sie das Kontrollkästchen "Pull-Request-Überprüfungen vor dem Zusammenführen erforderlich".

Ich würde auch empfehlen, dasselbe für Ihren Entwicklungszweig zu tun.

Qamar Stationwala
quelle