Eine etwas exotischere Verwendungsweise von git ist die einer Time Machine. Das Prinzip einer Time Machine ist, dass für einen Ordner, zB dem eigenen Dokumentenordner, regelmäßige Schnappschüsse erstellt werden. Das Feature ist dann, dass man “durch die Zeit” blättern kann, um alte Versionen oder gelöschte Dateien zu finden. Mit git kann man sich soetwas recht einfach erstellen:
Im Terminal wechselt man in das gewünschte Verzeichnis:
cd /Pfad/zum/VerzeichnisDort erstellt man ein git-Repository:
git initUnd fügt alle Dateien dem Repository hinzu:
git add *
git commit -m "initial commit"Jetzt benötigen wir ein Script, welches per Cronjob in den Intervallen ausgeführt wird, die wir gerne für unsere Time Machine Snapshots hätten. Mögliche Cronjobs wären zB.
crontab -e
@hourly /pfad/zu/script.sh
@daily /pfad/zu/script.shDie Datei script.sh müssen wir erstellen und ausführbar machen, und ihr folgenden Inhalt geben:
#!/bin/bash
DATE=`date +"%Y-%m-%d_%H-%M-%S"`
cd /path/to/your/folder # Change to your settings
git checkout -b $DATE
git checkout $DATE
git add *
git commit -m "snapshot of $DATE"
git checkout master
git rebase $DATEDas Script erstellt einen neuen Branch DATE und führt einen commit auf alle Änderungen im Verzeichnis durch. Anschließend wird ein rebase des commit auf den Branch “master” ausgeführt. Die Änderungen liegen also im Branch DATE als auch im Branch master.
Der Branch DATE wird nicht gelöscht. Er ist der Landepunkt für unsere Zeitmaschine.
Um nun durch die Zeit zu reisen wechselt man im Terminal in das Verzeichnis und gibt ein:
git checkout DATEwobei DATE ein Zeitstempel ist. Welche Zeitstempel verfügbar sind zeigt der Befehl
git branchDer Befehl versetzt euer Verzeichnis in den Zustand, in dem es sich zum Zeitpunkt DATE befunden hat.
Um wieder in die Gegenwart zu wechseln verwendet man den Befehl:
git checkout master