Ich habe einen Zweig in Remote gelöscht. Wie kann ich lokal synchronisieren?

Lesezeit: 3 Minuten

Ich habe ein Repository auf Github erstellt. Ich habe zwei Entwicklungsumgebungen und greife in beiden mit Github für Windows auf Github zu.

Auf einer der beiden Entwicklungsumgebungen habe ich einen Zweig gelöscht und in Github für Windows auf „Synchronisieren“ geklickt. Der Zweig wurde entsprechend in Github gelöscht. Als ich von meiner anderen Entwicklungsumgebung aus synchronisierte, gab es eine Option zum „Veröffentlichen“ des zu löschenden Zweigs, aber keine Option zum Löschen.

Wie kann ich Git oder Github für Windows anweisen, eine vollständige Synchronisierung durchzuführen, einschließlich der Löschung veralteter Zweige?

  • Ich glaube nicht, dass man sie „synchronisieren“ kann (z. B. das Äquivalent von git fetch --prune), aber Sie können jeden Zweig in GitHub für Windows manuell löschen.

    – Whymarrh

    11. September 2017 um 12:47 Uhr

  • Das ist alt, aber wenn jemand hierher kommt, lesen Sie auch diese Antwort stackoverflow.com/a/17029936

    – Abhishek Agrawal

    2. April 2022 um 4:10

Benutzer-Avatar von kostix
kostix

Ja und nein – je nachdem, was Sie mit „Löschen einer lokalen Zweigstelle“ wirklich gemeint haben.

Eine schnelle Antwort

  • Nein, es ist unmöglich, dass ein Remote-Repository einen normalen Zweig in Ihrem lokalen Repository löscht.

  • Ja, es ist möglich, Git zum Löschen aufzufordern Fernbedienung Zweige in Ihrem lokalen Repository für die Zweige, die in einem bestimmten Fall gelöscht wurden
    namens remote (z. B. „Herkunft“).

    Dies wird durch Laufen erreicht

      git remote prune origin
    

    oder

      git fetch --prune
    

Erläuterungen

Bitte verstehen Sie zunächst, dass Gits Modell für die Arbeit mit Remote-Repositorys asymmetrisch ist: Die Tatsache, dass ein Zweig in Ihrem lokalen Repository den Namen hat, der genau mit dem eines Zweigs in einem Remote-Repository übereinstimmt, hat für Git keine Bedeutung.

Der Grund ist zweierlei:

  • Ihr lokales Repository wird von Git als völlig eigenständig behandelt und ist nicht von anderen Repositorys abhängig.
  • Ihr lokales Repository kann mit einer beliebigen Anzahl von Remote-Repositorys kommunizieren und…
  • …diese Repositorys haben möglicherweise überhaupt keine „konzeptionelle“ Beziehung zu Ihrem lokalen Repository: Beispielsweise ist es möglich, die Daten von einem Repository, das den Linux-Quellcode hostet, in ein Repository zu holen, das Ihr Wochenendspielzeugprojekt enthält.

Mit anderen Worten: Wenn Sie beispielsweise ein privates Repository auf Github und einen lokalen Klon davon auf Ihrem PC haben, haben Sie einen Zweig über die Benutzeroberfläche von Github gelöscht und möchten nun, dass dieser Zweig in Ihrem lokalen Klon verschwindet, das stimmt verständlich, da diese beiden Repositorys eine 1:1-Beziehung haben. Bedenken Sie nun, dass Sie über ein Repository verfügen, das von Ihren Entwicklerkollegen Gill, Joe und Alice geklont wurde. Jeder von ihnen hat einfältig einen Zweig mit dem Namen „feature“ für die Entwicklung erstellt anders Features, und Sie haben dann aus all diesen drei Repositorys abgerufen – am Ende haben Sie drei Remote-Zweige mit dem Namen <remote>/featuredamit <remote> Der Platzhalter ist jeweils der Name einer Fernbedienung, die Sie diesen drei Repot-Repositories gegeben haben. Hinzu kommt, dass Sie Ihren eigenen Zweig mit dem Namen „feature“ haben können, der nichts mit den gleichnamigen Zweigen Ihrer Mitentwickler zu tun hat. Bedenken Sie nun, dass Alice beispielsweise ihren Zweig „feature“ zusammenführt und ihn dann entfernt. Bedeutet das, dass Ihr eigener Zweig „feature“ beim nächsten Abruf aus dem Alice-Repo automatisch ebenfalls verschwinden muss? Sicher nicht.

Während Git über bestimmte Helfer verfügt, um lokale Zweige irgendwie mit bestimmten entfernten Zweigen zu verknüpfen, sind diese Verbindungen asymmetrisch. Insbesondere behandelt Git Ihren lokalen Verlauf als „heilig“, und zerstörerische Operationen darauf erfordern Ihre expliziten Aktionen.

Weitere Informationen für Geeks

Die oben erläuterte Asymmetrie tritt nur in „normalen“ Git-Repositories auf, die am häufigsten verwendet werden. Es ist zu beachten, dass es möglich ist, ein Git-Repository zu erstellen, das sich anders verhält: beispielsweise bei einem Aufruf von git fetch origin In einem solchen Repository wird der Status der Zweige und Tags sichergestellt <origin> werden im lokalen Repository gespiegelt – bei Bedarf werden Dinge gelöscht und erstellt.

1450420cookie-checkIch habe einen Zweig in Remote gelöscht. Wie kann ich lokal synchronisieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy