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!
Dies ist der Befehl, den Sie auf dem Spiegel ausführen müssen:
git remote update
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.
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 ... :-)
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: