Es gab bereits einen Tip zum Thema Änderungen verteilen, der allerdings die gesamte Repository-Geschichte beinhaltete. Was ist, wenn du eine bestimmte Änderung exportieren möchtest? Oder nur ein Verzeichnis? Was ist, wenn du ein Archiv deines Repositorys für ein Backup anfertigen möchtest? Keine Sorge, Git kann all das und noch mehr. Danke an Stack Overflow für die hilfreichen Hinweise zu diesem Beitrag.
Für ein schnelles Backup deines Repositorys hilft dir ein git archive
. Wenn du eine ZIP-Datei für deine Repository-Dateien anlegen möchtest:
git archive HEAD --format=zip > archive.zip
Der Archivieren-Befehl packt Repositories gewöhnlich in Tarballs, so dass du sie einfach in dein Lieblingskomprimierungsprogramm weiterreichen kannst:
git archive HEAD | gzip > archive.tar.gz
Du kannst auch ein entferntes Repository archivieren, indem du die --remote=<repo>
Option verwendest. Beachte allerdings, dass das nicht für entfernte GitHub Repositories funktioniert. Hierfür wird der Download-Button empfohlen. Mit anderen entfernten Repositories sollte das allerdings prima funktionieren. Lies die Manpage, wenn es Probleme gibt.
Was ist, wenn du eine komprimierte Variante von Dateien möchtest? Dank des checkout-index
Befehls ist das ebenfalls einfach möglich. Grundsätzlich kopiert der Befehl alles im Index in ein anderes Verzeichnis. Dein Repository exportieren würde bedeuten:
git checkout-index -f -a --prefix=/path/to/folder/
Die -f
Option überschreibt Dateien und die -a
beinhaltet alle Dateien und Verzeichnisse. Vergiß bitte nicht den abschließenden Schrägstrich bei der --prefix
Option. Er ist sehr wichtig! Weglassen läßt den Befehl glauben, du möchtest stattdessen jeden Dateinamen mit diesem Präfix auswählen.
Wenn du nur eine bestimmte Datei oder ein bestimmtes Verzeichnis exportieren möchtest (in diesem Fall alles im bin/ Verzeichnis und die README):
git checkout-index -f --prefix=/path/to/folder/ bin/* README.textile
Sehr schön! Du kannst diesen Befehl auch mit find
verketten, wenn du beispielsweise alle Header-Dateien exportieren möchtest. Schau dir die checkout-index Manpage an. Daniel Schierbeck hat diesen Prozess in kleine Scripte namens git-export zusammengefaßt, die einen Blick wert sind, wenn du sie öfters benutzt.