2013-06-06 5 views
26

Wie kann ich alle Objekte einer Packdatei entpacken?Wie entpacke ich alle Objekte eines Git-Repositories?

Ich habe gerade eine Remote-Repository geklont, so dass mein lokaler Repository derzeit kein loses Objekt enthält, nur eine .pack und eine IDX-Dateien.

Ich habe versucht, git unpack-objects < .git/objects/pack/pack-.pack läuft, aber nichts passiert.

Ich mache etwas falsch? Gibt es einen anderen Befehl, das zu tun?

Antwort

32

Sie müssen die Pack-Objekte außerhalb des .git/objects/pack Verzeichnis verschieben, bevor Sie den Befehl. Die Paketdateien müssen sich jedoch im Repository befinden.

Erstellen Sie zum Beispiel einen Verzeichnisnamen SAMPLE in root Ihres Projekts. Verschieben Sie dann die Paketdateien in das Verzeichnis SAMPLE. Danach verwenden Sie im Repository ohne die Paketdateien den Befehl git unpack-objects < SAMPLE/*.pack. Git erzeugt alle Objekte innerhalb des Verzeichnisses .git/objects Ihres Repositorys.

+9

Hacky, aber gültig. Der Grund dafür ist, dass 'git unpack-objects' keine Objekte erstellen, die bereits im Repo sind, und da die Pack-Datei im Repo ist, tut sie nichts. Dies wird sehr deutlich in 'Hilfe zum Auspacken-Objekte' erklärt. –

+4

Dank, nur eine Sache - die Pack-Dateien müssen nicht –

+0

innerhalb des Repo sein Ich würde auch hinzufügen, dass es eine Datei '.git/Objekte/info/packs' die die Pack-Dateien unter' .git zur Liste erscheint/Objekte/Packs'. Es gibt auch die Datei '.git/packed-refs', die die Liste der refs (heads, tags) enthält, die über Pack-Dateien verfügbar sind. Ich bin mir nicht sicher, was ich mit ihnen machen soll, nachdem ich die Packdateien entfernt habe - vielleicht müssen sie entfernt werden, vielleicht ist 'git fsck' für sie zuständig - ich weiß nicht. Nur etwas für den Fall ... – kostix

Verwandte Themen