2010-01-20 3 views
7

Stellen Sie sich also vor, dass ich ein lokales Repository habe, das ich aus irgendeinem Ursprung geklont habe. Zum Zeitpunkt meines anfänglichen Klons hatte der Ursprung vier Zweige: MerkmalA, MerkmalB, MerkmalC und Master. Wenn ich Änderungen an den Ursprung schieben, der die featureA Zweig löschen Ich würde erwarten, etwas dagegen zu sehen das nächste Mal wird gelöscht I Ausgabe:Wie kann ich Git sagen, um mich über möglicherweise entfernte Niederlassungen zu warnen

$ git pull origin

Doch was passiert, ist, dass ich nichts sehen kann und wenn ich versuche, dass bestimmten Zweig nach unten ziehen mit

$ git pull origin featureA

bekomme ich folgende Fehlermeldung:

fatal: Couldn't find remote ref featureA
fatal: The remote end hung up unexpectedly

diesen total Sinn macht, als th Der Zweig wurde tatsächlich von der Fernbedienung gelöscht, also ja, der Hinweis ist nicht mehr da, aber ich frage mich, warum ich nicht über diese Tatsache informiert wurde. Mein .git/config für die Fern sieht wie folgt aus:

[remote "origin"]
fetch = +refs/heads/:refs/remotes/origin/
url = [email protected]:/data/git/perecep.git

ich einen kleinen Shell-Skript geschrieben habe, den die git ls-remote zusammen mit der Ausgabe von git branch verwendet -r zu finde entfernte Refs, deren Zweige nicht mehr auf dem Server existieren und fordere mich auf, wenn ich sie löschen möchte, aber ich frage mich, ob ich hier etwas falsch mache?

Antwort

2

Ich denke nicht, dass Sie etwas falsch machen. Ihre lokale Niederlassung ist nicht abhängig von der entfernten Niederlassung für die Existenz, und es ist ein vollkommen gültiger Stand der Dinge für eine entfernte Niederlassung, während Ihre lokale Niederlassung (mit dem gleichen Namen und scheinbar der gleichen Historie) weiter bestehen bleibt. Es ist der "zentralisierte" Ansatz, den Sie beschreiben, wenn überhaupt, der in Git als unorthodox gilt.

Edit: Tangential könnten Sie interessiert sein, die --track und --no-track Optionen zu git-Zweig und die branch.autosetupmerge Konfigurationsvariable.

+0

Ich bin nach einer „zentralen Server“ Workflow mit Git b/c Ich bin in einer Unternehmensumgebung und das ist, wie Entwickler mit Laptops würde es vorziehen, Code zu teilen (indem er öffentliche Zweigstellen auf einem zentralen Server erstellt, um ihre Änderungen für die Zusammenarbeit zu übertragen). Da wir neu von SVN übergehen, ist dies etwas, mit dem sie sich wohler fühlen. Ich denke, mein Anliegen ist, dass nach dem Erstellen mehrere ephemere Zweige dieser Art, die gelöscht werden, nachdem das Feature/Thema integriert wird, haben alle Entwickler jetzt Tonnen von abgestorbenen Remote-Zweig Refs in ihrem lokalen Repo. – NewGitUser

3

Okay, keine Notwendigkeit für ein spezielles Skript. Ich glaube, ich diesen Befehl übersehen

$ git remote prune origin

Aus der Manpage:

 
    prune 
      Deletes all stale tracking branches under . These stale branches 
      have already been removed from the remote repository referenced by 
      , but are still locally available in "remotes/". 

      With --dry-run option, report what branches will be pruned, but do 
      no(sic) actually prune them. 
+0

Gibt es irgendeine Einstellung, die das automatisch macht, wenn Sie die Fernbedienung aktualisieren? – xenoterracide

Verwandte Themen