Wayback-Machine für Dokumente
Alltags-Versionskontrolle mit Git

Ich sitze vor meinem Rechner und wundere mich darüber, in welchem Anfall geistiger Umnachtung ich wohl vor zwei Wochen die Änderungen in diesen Artikel eingearbeitet haben mag – die ursprüngliche Version war doch eigentlich viel besser. Wäre wirklich praktisch, nur den Teil, den ich vorletzten Samstag um drei Uhr früh geschrieben habe, entfernen zu können, aber alle anderen Änderungen seitdem beizubehalten. Gut, dass ich Git verwende, womit eine solche Änderung ganz leicht möglich ist…

Git ist ein Versionskontrollsystem, also ein Programm, das erlaubt, den genauen Ablauf der Entstehung eines Dokuments nachzuverfolgen und einzelne Sätze von Änderungen – Commits genannt – unabhängig vom verwendeten Editor rückgängig zu machen.

Außerdem erleichtert es die gemeinsame Arbeit an einem Projekt und erlaubt es einzelnen Personen, private Branches anzulegen – Entwicklungszweige, in die eigene Änderungen eingearbeitet werden – und diese dann später in der gemeinsamen Version zusammenzuführen oder zu verwerfen.

Der Ablauf beim Verwenden eines solchen Tools ist grob etwa folgendermaßen:

  1. Dem Versionskontrollsystem mitteilen, welche Dateien auf Änderungen überwacht werden sollen.
  2. Die Dateien editieren und speichern.
  3. Die Änderungen committen und somit eine Momentaufnahme des aktuellen Zustandes dauerhaft speichern.
  4. Zurück zu 2.: Weitereditieren.

Im Bedarfsfall ist es dann leicht, zum Beispiel jederzeit den Stand von vor zwei Wochen wiederherzustellen oder sich die genauen Unterschiede der aktuellen Version einer Datei zu einer älteren Version anzeigen zu lassen.

Git im Uni-Alltag

In der Softwareentwicklung gehören Versionskontrollsysteme zum Alltag, im Studium sind sie zum Beispiel in folgenden Situationen hilfreich:

Seminar- oder Diplomarbeiten
Besonders praktisch für Menschen, die – wie ich – gerne ihre Arbeiten weiterschreiben während eine alte Version korrekturgelesen wird, die Korrekturen aber trotzdem leicht übernehmen können wollen. Notizen und Anmerkungen gehen nie verloren, sondern bleiben immer archiviert, unabhängig vom aktuellen Stand der Arbeit. Jedes versionskontrollierte Verzeichnis ist dabei ein vollständiges Backup, sodass auch gestohlene Laptops oder verlorene USB-Sticks nicht so sehr wehtun. Auch bequem: Eigene Branches aufmachen, um überarbeitungsbedürftige Passagen aus der offiziellen Version für die Betreuerin rauszuhalten, bis sie publikumsfähig sind.

zeitliche Dokumentation
Git-Logs sind nützlich um zeitliche Abläufe genau zu dokumentieren, zum Beispiel bei Laborarbeiten oder auch einfach um zu überprüfen, wie lange Arbeitsschritte gedauert haben. Jeder Commit bleibt dauerhaft gespeichert, dh. es lässt sich lückenlos rekonstruieren, wann was hinzugefügt oder auch geändert wurde.

Vorlesungsmitschriften
Gemeinsam Vorlesungsmitschriften zu schreiben ist mit Git denkbar einfach. Wenn die alte Version nicht mehr gepflegt wird, kann sie jederzeit irgendjemand klonen und die alte Arbeit inklusive der gesamten Versionsgeschichte übernehmen und weiterführen. Welche Fehler korrigiert sind oder noch bestehen, lässt sich leicht überprüfen.

Git bei der Softwareentwicklung

Typischerweise werden derartige VCS[fn: Version Control Systems] in Softwareprojekten benutzt, wo sie das Auffinden von Fehlern stark erleichtern, indem sie es ermöglichen, die Änderungen am Quellcode ausfindig zu machen, die einen solchen Bug verursacht haben. [fn: Im Fall von Git ist das per git-bisect sogar vollautomatisch möglich.]

Während es bei älteren Versionskontrollsystemen wie Subversion und CVS noch nötig war, einen Server zu betreiben und dort mehr oder weniger mühselig ein Repository – also eine Ablage für die Versionsgeschichte – einzurichten, ist das bei modernen verteilten VCS wie Git nicht nötig, nach der Installation kann jedes beliebige lokale Verzeichnis schnell und einfach unter Versionskontrolle gestellt werden. Jeder Klon des Repositories ist eine vollständige Kopie und beinhaltet die komplette Versionsgeschichte.[fn: http://whygitisbetterthanx.com/ ]

Dennoch kann eine Kopie auf einem Server häufig praktisch sein, zum Beispiel wenn mehrere Personen gemeinsam an einem Projekt arbeiten oder mehrere Dokumente von mehreren Rechnern aus bearbeitet werden sollen oder schlicht und einfach nur immer ein vollständiges Backup des gesamten Projekts auf eine gewisse Anzahl von Rechnern verteilt werden soll.

Git beim ZID

Praktischerweise stellt der ZID seit einiger Zeit Git auf web.student.tuwien.ac.at zur Verfügung[fn: Besten Dank an dieser Stelle an Herrn Fritz Mayer vom ZID!], das heißt allen Studierenden der TU Wien steht ein zuverlässiger kostenfreierGit-Provider für sämtliche ihrer Projekte zur Verfügung.

Um diesen zu nutzen, muss nach der lokalen Installation von Git (siehe URL-Sammlung) folgendes gemacht werden:

Am Arbeitsrechner:
  • mkdir git-ist-gut
  • cd git-ist-gut
  • git init
  • git remote add --mirror origin e1234567@web.student.tuwien.ac.at:~/git-ist-gut/
  • echo 'hello world' > hello.txt
  • git add hello.txt
  • git commit -m 'Mein erster Commit.'
  • git push
  • git log # hat alles funktioniert?

Soll das Git-Repository öffentlich zugänglich sein, lässt sich einfach ein Verzeichnis in ~/public_html auf web.student anlegen, das dann beispielsweise per git clone http://web.student.tuwien.ac.at/~e1234567/git-ist-gut/ von anderen geklont werden kann.

Geht's auch bequemer?

Natürlich existieren für Git zahlreiche grafische Benutzeroberflächen, die Git direkt in den Windows-Explorer (TortoiseGit) und in Entwicklungsumgebungen wie Eclipse (EGit) oder Emacs (Magit) integrieren. Auch Standalone-Clients gibt es wie Sand am Meer (GitX, gitg, etc.). Eine gute Übersicht über Git-Tools findet sich unter http://git-scm.com/tools.

Tutorials und Screencasts

kurze Git-Einführungen

weiterführend und tiefergehend

Git-Screencasts

Sebastian hält seine Einkaufszettel unter Versionskontrolle.
Topic revision: r4 - 29 Mar 2011 - 21:00:04 - Main.UnknownUser
 

Herausgeberin:
Hochschülerinnen- und Hochschülerschaft an der Technische Universität Wien
(Vorsitzender: Lukas BÜRSTMAYR)
Wiedner Hauptstraße 8-10
1040 Wien
T: +43-1-58801-49501
F: +43-1-58691-54
sekretariat@htu.at