wake-up-neo.com

Wie aktualisiere ich einen Git-Klon --mirror?

Ich habe ein Git-Repository erstellt, um eine Live-Site (bei der es sich um ein nicht-nacktes Git-Repository handelt) zu spiegeln:

git clone --mirror ssh://[email protected]/path/to/repo

Welchen Befehl oder welche Befehle muss ich verwenden, um diesen Spiegelklon mit allen Änderungen von seinem entfernten Ursprung auf dem neuesten Stand zu halten?

Ich möchte alles auf dem neuesten Stand halten: Commits, Refs, Hooks, Branches, etc.

Vielen Dank!

129
J. Bruni

Dies ist der Befehl, den Sie auf dem Spiegel ausführen müssen:

git remote update
195
ralphtheninja

In Bezug auf Commits, Refs, Branches und " und so weiter" funktioniert Magnus Antwort einfach (git remote update).

Aber leider gibt es keine Möglichkeit, clone/mirror/update den Haken so wie ich wollte .. .

Ich habe diesen sehr interessanten Thread zum Klonen/Spiegeln der Hooks gefunden:

http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread

Ich habe gelernt:

  • Die Hooks werden nicht als Teil des Repository-Inhalts betrachtet.

  • Es gibt mehr Daten, wie die .git/description Ordner, der nicht geklont wird, genau wie die Hooks.

  • Die Standard-Hooks, die im Verzeichnis hooks angezeigt werden, stammen aus dem Verzeichnis TEMPLATE_DIR

  • Es gibt dieses interessante template Feature auf Git.

Also kann ich entweder dieses "Clone the Hooks" ignorieren oder mich für eine rsync Strategie entscheiden, die den Zwecken meines Spiegels entspricht (Backup + Quelle nur für andere Klone).

Nun ... Ich werde das Klonen von Hooks einfach vergessen und mich an das git remote update Weg.

  • Sehe hat gerade darauf hingewiesen, dass nicht nur "Hooks" nicht vom clone/update -Prozess verwaltet werden, sondern auch Stashes, Rereres usw. ... Also, für ein striktes Backup , rsync oder gleichwertiges wäre wirklich der richtige Weg. Da dies in meinem Fall nicht wirklich notwendig ist (ich kann es mir leisten, keine Haken, Verstecke usw. zu haben), werde ich mich wie gesagt an die remote update.

Vielen Dank! Ein bisschen von meinem "git-fu" verbessert ... :-)

7
J. Bruni

Siehe hier: Git klont nicht alle Zweige bei nachfolgenden Klonen?

Wenn Sie dies wirklich möchten, indem Sie anstelle von Push --mirror Zweige ziehen, können Sie hier einen Blick darauf werfen:

"fetch --all" in einem git bare Repository synchronisiert keine lokalen Zweige mit den entfernten

Diese Antwort enthält detaillierte Schritte, wie dies relativ einfach erreicht werden kann:

4
sehe