Warum benutzt Git
git push <remote> :<branch>
wie in
git push origin :featureA
den Zweig featureA
vom Remote-Server löschen ?
Mich interessiert, warum der Doppelpunkt als Löschflag verwendet wurde.
Es ist so anders als git branch -d <localbranch>
.
Warum machen wir so etwas nicht?
git branch -d --remote origin <branchname>
oder gibt es eine tiefere Bedeutung hinter dem Doppelpunktsymbol, die ich nicht kannte?
git push origin --delete foobar
Antworten:
Es ist nicht die Bedeutung des
:
Per se, sondern was vorhanden ist oder eher davor fehlt.Das refspec-Format ist
(optional + für nicht schnellen Vorlauf)
Wenn Sie also so etwas tun
git push origin :featureA
, geben Sie eine leere Quellreferenz an und machen das Ziel im Grunde "leer" oder löschen es.PS: Beachten Sie, dass die Referenz
:
oder nichts nicht bedeutet, nichts zu nichts zu schieben. Es macht git, "passende" Zweige zu pushen: Für jeden Zweig, der auf der lokalen Seite existiert, wird die entfernte Seite aktualisiert, wenn auf der entfernten Seite bereits ein Zweig mit demselben Namen existiert.quelle
git push origin -d <branch>
,git push origin -D <branch>
um einen Remote-Zweig zu löschen und das Löschen zu erzwingen.Der Doppelpunkt ist keine "Löschflagge". Beachten Sie, dass sowohl Git Push als auch Git Pull null oder mehr Refspecs als letzte Argumente akzeptieren. Lesen Sie jetzt über Refspecs . Ein Doppelpunkt trennt die Quelle vom Ziel in einer Referenz. Der Befehl
git push origin :foo
hat eine leere Quelle und sagt im Wesentlichen "Push nichts, um foo des Ursprungs zu verzweigen" oder mit anderen Worten, "Zweig foo am Ursprung nicht existieren lassen".quelle
:foo
. Ein leerer Zweig teilt den Verlauf nicht mit einem vorhandenen Remote-Zweig und kann daher meines Erachtens einen vorhandenen Remote-Zweig nicht mit einem leeren Zweig überschreiben. Mit Ihrer Antwort stimmt etwas nicht.