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


Nach oben

[zurück] ... [Übersicht] ... [vor]