Verteilte Versionsverwaltung
Ein Vergleich von Darcs, Git, Mercurial und Bazaar
von Jan Schütze
[zurück] ... [Übersicht] ... [vor]
Git
Git wurde im April 2005 Linus Torvalds vorgestellt, es ist in C geschrieben und steht unter der GPL und ist damit frei verfügbar.
Torvalds Motivation war die Entwicklung eines freien Systems zur Verwaltung des Linux-Kernel, nachdem das bisher verwendete Bitkeeper
aufgrund einer Lizenzänderung nicht mehr verwendbar war. Wichtige Anforderungen für Torvalds waren eine verteilte Strategie, eine hohe
Sicherheit der Versionsgeschichte sowie eine hohe Performance. Augenmerk wurde auch auf eine nichtlineare Entwicklungsstrategie gelegt.
So ist Git sehr effektiv im Erstellen und Zusammenfügen von einzelnen Entwicklungszweigen. Dies wird durch eine Reihe von internen
Merge-Strategien unterstützt, die auch das gleichzeitige zusammenführen mehrerer Zweige ermöglicht (Octopus-Strategie) und kann auch
mittels externer Programme erweitert werden. Git arbeitet nach dem Snapshot-Prinzip, d.h. es wird ein Abbild des gesamten Verzeichnisbaums
erstellt und in komprimierter Form abgespeichert. Zum Austausch der Daten unterstützt Git neben einem eigenen auch diversen Netzwerkprotokollen
(HTTP, SSH).
Bekannte Projekte die auf Git setzen sind neben dem Linux-Kernel unter anderem auch X.org Server, Samba und das Webframework
Ruby on Rails.
Verfügbarkeit
Für Linux, Solaris und Mac OS X sind neben Binärversionen auch diverse GUIs verfügbar. Windows wird nicht direkt unterstützt, es ist jedoch
möglich Git mittels Cygwin in der Kommandozeile zuverwenden, außerdem gibt es ein Eclipse-Plugin. Neben verschiedenen Webinterfaces um
Repositories zu durchsuchen gibt es auch Hostingdienste (z.B. Github), die es ermöglichen sein Projekt zu
verbreiten und im Team zu bearbeiten. Für Umsteiger von Subversion besteht die Möglichkeit ihr zentrales Repository direkt in Git zu
integrieren.
Grundlegende Kommandos
Aktion |
Kommando |
initialisieren |
git init |
Checkout |
git checkout |
Datei hinzufügen |
git add |
Datei löschen |
git rm |
Commit |
git commit |
Pull |
git pull |
Push |
git push |
Merge |
git merge |
Branch erzeugen |
git branch |
Aktuelle Änderungen |
git diff |
Änderungsgeschichte |
git log |
[zurück] ... [Übersicht] ... [vor]