2012-08-09 3 views
8

Ich fange gerade an, git für die Versionskontrolle zu verwenden. Ich möchte eine Sicherungskopie meines Repositorys auf einem lokalen Dateiserver aufbewahren. Nachdem ich über den richtigen Weg zur Sicherung eines Git-Repositorys gelesen hatte, beschloss ich, das Repository als ein Gitbündel auf dem Dateiserver zu speichern.Wie kann ich auf ein Gitbündel schieben

Ich kann mein Repository bündeln und das resultierende Bündel auf den Fileserver kopieren. Prüfen. Ich habe auch versucht zu klonen und davon zu ziehen. Alles funktioniert gut. Allerdings möchte ich von Zeit zu Zeit auch meine lokalen Änderungen anpassen. Wenn ich so etwas wie

git push bundlefile.git 

ausführen bekomme ich den Fehler:

error: failed to push some refs to 'bundlefile.git' 

Sie können aus einem Bündel klonen oder ziehen, aber ist es nicht möglich, sie zu schieben? Ich möchte nicht jedes Mal, wenn ich eine Sicherungskopie erstellen möchte, ein Bündel meines gesamten Repositorys erstellen.

Ist dieser Benutzer Fehler oder sind Bundles nicht dazu bestimmt, geschoben zu werden?

+0

Es gibt ein großartiges Beispiel dafür, wie Paketdateien am Ende der Manpage "git bundle" manipuliert und inkrementell aktualisiert werden können. – Christopher

+0

Dies scheint ein wenig weit weg mit Bündeln und nackten Repos zu bekommen. Wenn Sie einfach Ihren git-Repo sichern möchten, können Sie einfach das .git-Verzeichnis tarnen (oder zippen) und damit fertig sein. Vielleicht machen Sie zuerst einen "git gc", um die Größe etwas zu reduzieren. Dies ist kein schweres Problem und erfordert keine komplizierten Lösungen. –

Antwort

5

Sie können nicht direkt zu einer Bundle-Datei wechseln. Eine Bundle-Datei ist eine komprimierte Repräsentation eines Repositorys. Um sie zu ändern, müsste sie erneut entbündelt, verschoben und gebündelt werden.

Eine Möglichkeit, dies zu tun, ist, wie Sie sagten, jedes Mal, wenn Sie ein Backup erstellen möchten, ein neues Bundle zu erstellen.

Eine andere Möglichkeit ist, ein bare Repository auf dem Dateiserver zu erstellen, und drücken Sie auf das. Ein blankes Repository ist ein Repository ohne Arbeitsverzeichnis, das im Wesentlichen den Inhalt des Verzeichnisses .git von einem normalen Klon darstellt. Sie können ein leeres Repository mit git init --bare erstellen.

+0

Das ist ein guter Vorschlag. Ich hätte lieber eine einzige komprimierte Datei, die als Backup-Lösung funktioniert, aber die Leichtigkeit des Pushings ist wichtiger als diese Überlegungen. Vielen Dank! – farnsy

-4

Es klingt wie Sie haben ein Problem mit Berechtigungen auf dem Dateiserver. Stellen Sie sicher, dass Ihr Benutzer/Ihre Gruppe über Schreibberechtigungen verfügt.