Abruf vom Ursprung mit gelöschten entfernten Zweigen?
440
Wenn ich dies tue git fetch originund origin einen gelöschten Zweig hat, scheint er ihn in meinem Repository nicht zu aktualisieren. Wenn ich es tue git branch -r, zeigt es immer noch origin/DELETED_BRANCH.
vielen Dank. Ich habe diese Zweige zuvor manuell gelöscht.
Maksim Dmitriev
4
Aus irgendeinem Grund funktionierte Ihr Befehl nicht, aber dieser Befehl funktionierte für einen nicht vorhandenen Remote-Zweig in meiner Verzweigung origin: git fetch -p origin Als ich das tat, wurde git branch -r der nicht vorhandene Remote-Zweig nicht mehr angezeigt.
Jungs, wenn ich das mache, heißt es [deleted] (none) -> origin/ < branch name >und die Filiale wird immer noch auf dem lokalen Repo angezeigt. Irgendeine Idee warum?
Buddhi741
4
Ich erhalte die Meldung, dass meine Zweige gelöscht wurden, aber beim Ausführen werden git branchweiterhin die Zweige angezeigt, die angeblich gelöscht wurden.
Nachdem jemand einen Zweig aus einem Remote-Repository gelöscht hat, löscht git die lokalen Repository-Zweige nicht automatisch, wenn ein Benutzer einen Git-Pull oder einen Git-Abruf durchführt. Wenn der Benutzer jedoch möchte, dass alle Tracking-Zweige aus seinem lokalen Repository entfernt werden, die in einem Remote-Repository gelöscht wurden, kann er Folgendes eingeben:
Git Remote Prune Ursprung
Als Hinweis bedeutet der Parameter -p von git fetch -ptatsächlich "beschneiden".
In beiden Fällen werden die nicht vorhandenen Remote-Zweige aus Ihrem lokalen Repository gelöscht.
um Ihre Filialliste zu synchronisieren. Das Git-Handbuch sagt
-p, --prune
Entfernen , nachdem das Abrufen, keine Fernverfolgung Referenzen die nicht mehr existiert auf der Fernbedienung. Tags unterliegen nicht dem Bereinigen, wenn sie nur aufgrund der automatischen Standardverfolgung von Tags oder aufgrund einer --tagsOption abgerufen werden . Wenn Tags jedoch aufgrund einer expliziten Referenzspezifikation abgerufen werden (entweder in der Befehlszeile oder in der Remote-Konfiguration, z. B. wenn die Remote mit der --mirrorOption geklont wurde ), werden sie ebenfalls beschnitten.
Ich persönlich benutze git fetch origin -p --progresses gerne, weil es eine Fortschrittsanzeige zeigt.
fetch: Dokumentieren Sie, dass das Beschneiden vor dem Abrufen erfolgt
Dies wurde in 10a6cc8 geändert ( fetch --prune: Prune vor dem Abrufen ausführen, 2014-01-02), aber es scheint, dass niemand in dieser Diskussion realisiert hat, dass wir das "Nachher" explizit bewerben.
In der Dokumentation heißt es nun:
Entfernen Sie vor dem Abrufen alle Fernverfolgungsreferenzen, die auf der Fernbedienung nicht mehr vorhanden sind
Das ist, weil:
Wenn wir einen Remote-Tracking-Zweig mit dem Namen " frotz/nitfol" aus einem vorherigen Abruf haben und der Upstream jetzt einen Zweig mit dem Namen " frotz" hat, kann der Abruf " frotz/nitfol" nicht mit einem " git fetch --prune" aus dem Upstream entfernen . git würde den Benutzer informieren, " git remote prune" zu verwenden, um das Problem zu beheben.
Ändern Sie die Funktionsweise von " fetch --prune", indem Sie den Bereinigungsvorgang vor dem Abrufvorgang verschieben. Auf diese Weise wird der Benutzer nicht vor einem Konflikt gewarnt, sondern automatisch behoben.
Antworten:
Sie müssen Folgendes tun
Dadurch wird die lokale Datenbank der Remote-Zweige aktualisiert.
quelle
origin
:git fetch -p origin
Als ich das tat, wurdegit branch -r
der nicht vorhandene Remote-Zweig nicht mehr angezeigt.git remote prune origin
und ähnlich wiegit pull --prune
bei erwähnten stackoverflow.com/a/6127884/94687 und stackoverflow.com/a/17983126/94687 sind.[deleted] (none) -> origin/ < branch name >
und die Filiale wird immer noch auf dem lokalen Repo angezeigt. Irgendeine Idee warum?git branch
weiterhin die Zweige angezeigt, die angeblich gelöscht wurden.Von http://www.gitguys.com/topics/adding-and-removing-remote-branches/
Als Hinweis bedeutet der Parameter -p von
git fetch -p
tatsächlich "beschneiden".In beiden Fällen werden die nicht vorhandenen Remote-Zweige aus Ihrem lokalen Repository gelöscht.
quelle
Sie müssen Folgendes tun
um Ihre Filialliste zu synchronisieren. Das Git-Handbuch sagt
Ich persönlich benutze
git fetch origin -p --progress
es gerne, weil es eine Fortschrittsanzeige zeigt.quelle
Das hat bei mir funktioniert.
quelle
In Bezug
git fetch -p
auf Git 1.9 hat sich sein Verhalten geändert, und nur Git 2.9.x / 2.10 spiegelt dies wider.Siehe Commit 9e70233 (13. Juni 2016) von Jeff King (
peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 1c22105 , 06. Juli 2016)In der Dokumentation heißt es nun:
Das ist, weil:
quelle