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/Verzeichnis
Dort erstellt man ein git-Repository:
git init
Und 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.sh
Die 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 $DATE
Das 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 DATE
wobei DATE
ein Zeitstempel ist. Welche Zeitstempel verfügbar sind zeigt der Befehl
git branch
Der 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