Wie kann ich ein Git Repo sichern?

26

Ich plane, von SVN zu Git zu wechseln. Mit svn kopiere ich einfach meinen Repo-Ordner, wenn ich ihn sichern möchte. Wie auch immer, git hat keinen, was soll ich tun?

Soll ich einen Klon auf einem separaten Laufwerk erstellen und aktualisieren, indem ich aus meinem Projekt ziehe? Dann kann ich diesen Ordner brennen / archivieren und es wird die ganze Geschichte haben?

Dies ist wahrscheinlich offensichtlich, aber ich möchte sicher gehen, wenn es um Backups geht. Ich tue immer noch so, als gäbe es ein Root-Repository.

Sathyajith Bhat
quelle
Siehe auch: Sichern eines GitHub-Repositorys (die Antworten funktionieren auch für Nicht-GitHub-Git-Projekte)
Martin Thoma,

Antworten:

14

Du kopierst es einfach. git hat ein Repo - Ordner verwenden, es ist nur aus normalen Verzeichnisansichten versteckt. (Der Ordner heißt .gitauf * nix-Systemen und wird nur angezeigt, wenn Sie ihn verwenden ls -a. Ich gehe davon aus, dass er das Attribut "hidden" in Windows setzt, aber ich habe git nie in einer Windows-Umgebung verwendet, daher bin ich mir nicht sicher wie es dort gehandhabt wird.)

Dave Sherohman
quelle
Es gibt ein paar Projektdateien in meinem Kofferraum, die ich ignoriere. Also kann ich es buchstäblich kopieren? (Ich gehe davon aus, dass es genauso funktioniert wie Linux). Ist Klonen also nur eine Dateikopie? Ich denke, wenn ich alle Daten ziehe, die ich will, ist in dem Ordner. Ich habe überprüft, ob es .git-Dateien gibt, aber es gibt .svn-Dateien in meinem SVN-Trunk. Ich habe nicht daran gedacht, zu überprüfen, ob Verlaufsdaten vorhanden sind
2
Unter Windows ist es immer noch .gitmit dem Attribut "Versteckt".
Grawity
1
@ acidzombie24: Das .gitVerzeichnis enthält den gesamten Repository-Status, einschließlich des Verlaufs. (Das ist der "verteilte" Teil.)
Grawity
5
@grawity: Es ist mehr der "eigenständige" Teil, der verteilte Teil ist, wenn Sie Unterschiede zwischen den eigenständigen Repositorys austauschen :)
akira
19

Die Antwort von Akira ist korrekt, aber Sie können --mirror hinzufügen, um ein nacktes Repo zu erstellen (für ein etwas kleineres Backup).

Wir verfolgen die folgende Strategie (fast genau):

git clone --mirror yourrepo backup.repo
tar cjf backup.repo.tar.bz2 backup.repo
scp backup.tar.bz2 ssh://somewhereelse

So stellen Sie das Backup wieder her:

tar xjf backup.repo.tar.bz2
git clone backup.repo yourrepo
Akirisol
quelle
2
Das ist hilfreich, danke. Wie verwende ich das gesicherte Repo, um den Arbeitsbaum wiederherzustellen?
Jonathan Day
10

Ich benutze Git Bundle . Führen Sie zum Erstellen einer Kopierdatei (eine Sicherungsdatei) Folgendes aus:

git bundle create backup.bundle master

Um das Repository mit Branch Master wiederherzustellen, klonen Sie einfach die Datei backup.bundle:

git clone backup.bundle -b master my-project
MariuszS
quelle
2

erstelle einen neuen Klon woanders:

 % git clone yourepo somewhereelse

btw, git hat einen Repo - Ordner, können Sie es in Ihrer Arbeitskopie unter dem Unterverzeichnis finden .git. Jede Arbeitskopie hat diesen "Repo-Ordner".

Akira
quelle
10
Ich denke nicht, dass ein Klon als Backup akzeptabel ist, da es keine exakte Kopie ist. Zumindest die entfernten Zweige des geklonten Repos fehlen im Klon, und die Zweige des geklonten Repos erscheinen als entfernte Zweige im Klon.
sleske