Das mit Abstand am weitesten verbreitete moderne Versionskontrollsystem der Welt heutzutage ist Git. Git ist ein ausgereiftes, aktiv gepflegtes Open-Source-Projekt, das 2005 ursprünglich von Linus Torvalds, dem berühmten Entwickler des Linux Betriebssystem-Kernel, entwickelt wurde. Eine schwindelerregend hohe Anzahl an Softwareprojekten vertraut auf Git als Versionskontrolle, darunter kommerzielle und Open-Source-Projekte gleichermaßen. Unter den stellensuchenden Softwareentwicklern finden sich viele, die mit Git vertraut sind, und Git lässt sich gut mit einer breiten Palette an Betriebssystemen und IDEs (Integrierte Entwicklungsumgebungen) kombinieren.

Mit seiner verteilten Architektur ist Git ein Beispiel für ein DVCS (Distributed Version Control System – verteiltes Versionskontrollsystem). Anstatt dass der volle Versionsverlauf der Software sich nur an einem einzigen Ort befindet, wie es in früher beliebten Versionskontrollsystemen wie CVS oder Subversion (auch als SVN bekannt) üblich war, ist in Git jede Arbeitskopie der Entwickler gleichzeitig ein Repository, das den vollständigen Verlauf aller Änderungen enthält.

Git ist jedoch nicht nur verteilt, sondern auch auf Performance, Sicherheit und Flexibilität ausgerichtet.

Leistung

Bei reiner Betrachtung der Leistungsmerkmale von Git, fällt auf, wie stark diese im Vergleich zu vielen Alternativen sind. Für die Commits neuer Änderungen, Branching, Merging und den Vergleich älterer Versionen wurde auf optimale Performance geachtet. Die in Git implementierten Algorithmen schöpfen aus umfassenden Kenntnissen häufiger Attribute echter Quellcode-Dateibäume, deren Modifizierung im Laufe der Zeit und den entsprechenden Zugriffsmustern.

Im Gegensatz zu einigen anderen Versionskontrollsystemen lässt sich Git bei der Bestimmung des Storage- und Versionsverlaufs des Dateibaums nicht von Dateinamen in die Irre führen, sondern konzentriert sich auf den Inhalt der Datei. Quellcode-Dateien werden schließlich häufig umbenannt, aufgeteilt und neu angeordnet. Das Objektformat der Git Repository-Dateien nutzt eine Kombination aus Delta-Codierung (Speichern von inhaltlichen Unterschieden), Komprimierung und ausdrücklicher Speicherung von Verzeichnisinhalten sowie Versionsmetadatenobjekten.

Der verteilte Ansatz sorgt darüber hinaus für erhebliche Vorteile bezüglich der Performance.

Nehmen wir beispielsweise an, die Entwicklerin Alice nimmt Änderungen am Quellcode vor, fügt ein Feature für den bevorstehenden Release 2.0 hinzu und führt dann einen Commit dieser Änderungen mit aussagekräftigen Nachrichten durch. Anschließend arbeitet sie an einem zweiten Feature und committet diese Änderungen ebenfalls. Diese werden natürlich im Versionsverlauf als separate Aufgaben gespeichert. Nun wechselt Alice zum Branch der Version 1.3 derselben Software, um einen Fehler an dieser älteren Version zu beheben. So kann Alices Team eine Fehlerkorrektur für die Version 1.3.1 ausliefern, bevor die Version 2.0 fertig ist. Danach kann Alice zum Branch 2.0 zurückkehren und an neuen Features für diese Version arbeiten. All dies geschieht ohne Netzwerkzugriff und somit schnell und zuverlässig. Sie könnte ihre Arbeit sogar im Flugzeug erledigen. Wenn die individuell committeten Änderungen bereit zum Versenden an das Remote-Repository sind, kann Alice mit nur einem Befehl einen Push für alle Änderungen gleichzeitig durchführen.

Security

Bei der Konzipierung von Git gehörte die Integrität des verwalteten Quellcodes zu den obersten Prioritäten. Der Inhalt der Dateien sowie die wahren Beziehungen zwischen den Dateien und Verzeichnissen, Versionen, Tags und Commits – alle diese Objekte im Git-Repository werden mit einem kryptografisch sicheren Hashing-Algorithmus namens SHA1 gesichert. Auf diese Weise sind der Code und der Änderungsverlauf gegen versehentliche als auch vorsätzliche Änderungen geschützt und die vollständige Verfolgbarkeit des Verlaufs wird sichergestellt.

Mit Git kannst du dir sicher sein, dass der Inhaltsverlauf deines Quellcodes immer authentisch ist.

Einige andere Versionskontrollsysteme bieten keinen Schutz gegen heimliche Änderungen zu einem späteren Zeitpunkt. Dies kann für jedes Unternehmen, das Softwareentwicklung betreibt, eine ernsthafte Schwachstelle in der Informationssicherheit sein.

Flexibility

Eines der wichtigsten Designziele von Git ist die Flexibilität. Git ist in mehrerer Hinsicht flexibel: in seinem Support verschiedener nicht-linearer Entwicklungs-Workflows, in seiner Effizienz sowohl bei kleinen als auch großen Projekten und in seiner Kompatibilität mit vielen bestehenden Systemen und Protokollen.

Git wurde so konzipiert, dass Branching und Tagging in bevorzugter Weise unterstützt wird (nicht wie bei SVN) und die Betriebsabläufe, die sich auf Branches und Tags auswirken (wie Merging oder Rückgängigmachen), werden ebenfalls als Teil des Änderungsverlaufs gespeichert. Nicht alle Versionskontrollsysteme verfügen über diese Möglichkeiten zur Verfolgung.

Versionskontrolle mit Git

Git ist für die meisten Softwareteams heute die beste Wahl. Auch wenn jedes Team anders ist und seine eigenen Analysen durchführen sollte, haben wir im Folgenden die Hauptgründe aufgeführt, warum Versionskontrolle mit Git anderen Alternativen vorzuziehen ist:

Git ist gut

Git verfügt über die Funktionen, Performance, Sicherheit und Flexibilität, die den Anforderungen der meisten Teams und einzelnen Entwicklern entsprechen. Auf diese Attribute von Git sind wir oben schon eingegangen. In direkter Gegenüberstellung mit den meisten anderen Alternativen schneidet Git bei vielen Teams sehr gut ab.

Git ist de facto Standard

Git ist das am weitesten verbreitete Tool seiner Art. Dies macht Git aus den folgenden Gründen interessant. Bei Atlassian wird nahezu unser gesamter Projektquellcode in Git verwaltet.

Unzählige Entwickler verfügen bereits über Erfahrung mit Git und ein erheblicher Anteil der Studienabsolventen haben sogar ausschließlich Erfahrung mit Git. Einige Abteilungen müssen bei der Migration von einem anderen Versionskontrollsystem zu Git zwar noch einen Lernprozess durchlaufen, aber viele derzeitige und zukünftige Entwickler müssen nicht extra in Git geschult werden.

Git bietet nicht nur den Vorteil eines großen Talentpools. Da es die vorherrschende Lösung ist, sind viele Softwaretools und -services von Drittanbietern bereits in Git integriert, u. a. IDEs und unsere eigenen Tools, wie der DVCS-Desktop-Client SourceTree, Software zur Vorgangs- und Projektverfolgung, Jira und auch der Code-Hostingservice Bitbucket.

Wenn du dir als noch unerfahrener Entwickler wertvolle Fähigkeiten hinsichtlich Softwareentwicklungstools aneignen möchtest, sollte im Bereich Versionskontrolle Git auf jeden Fall auf der Liste stehen.

Git ist ein Open-Source-Projekt von erster Güte

Git ist ein sehr gut unterstütztes Open-Source-Projekt mit solider Leitung seit über einem Jahrzehnt. Die Projekt-Maintainer haben gutes Urteilsvermögen bewiesen und verfolgen einen ausgereiften Ansatz bei der Erfüllung langfristiger Anforderungen der Benutzer mit regelmäßigen Releases, die jedes Mal die Benutzerfreundlichkeit und Funktionalität weiter verbessern. Die Qualität von Open-Source-Software lässt sich leicht überprüfen und zahlreiche Unternehmen verlassen sich in hohem Maße auf diese Qualität.

Für Git ist hervorragender Community-Support mit einer sehr breiten Benutzerbasis verfügbar. Die reichlich vorhandene Dokumentation in Form von Büchern, Tutorials und speziellen Webseiten ist ausgezeichnet. Darüber hinaus gibt es Podcasts und Videotutorials.

Ein Open-Source-Tool senkt den Kostenaufwand für Hobby-Entwickler, da sie Git gebührenlos nutzen können. Bei der Verwendung in Open-Source-Projekten ist Git zweifellos der Nachfolger der vorigen Generationen erfolgreicher Open-Source-Versionskontrollsystemen SVN und CVS.

Kritikpunkte an Git

Ein häufiger Kritikpunkt an Git ist die schwierige Erlernbarkeit. Teile der Git-Terminologie wird für Einsteiger neu sein und Benutzer anderer Systeme verbinden mit bestimmten Bezeichnungen eine andere Bedeutung – revert in bedeutet in Git z. B. etwas anderes als in SVN oder CVS. Trotzdem ist Git sehr leistungsfähig und bietet seinen Benutzern viel Funktionalität. Diese Funktionen zu erlernen kann ein wenig Zeit erfordern. Sobald dies jedoch geschehen ist, kann durch ihre gezielte Anwendung die Entwicklungsgeschwindigkeit des Teams gesteigert werden.

Teams, die bisher mit einem nicht verteilten Versionskontrollsystem gearbeitet haben, tendieren dazu, an einem zentralen Repository festhalten zu wollen. Git wurde zwar als verteiltes Versionskontrollsystem (DVCS) konzipiert, aber es gibt trotzdem die Möglichkeit zu einem offiziellen, kanonischen Repository, in dem alle Änderungen der Software gespeichert werden müssen. Mit Git wird die Arbeit der Entwickler nicht durch die Verfügbarkeit und Performance des zentralen Servers eingeschränkt, da jeder Entwickler über ein eigenes vollständiges Repository verfügt. Selbst während Ausfällen oder offline kann der komplette Projektverlauf aufgerufen werden. Da Git flexibel und verteilt ist, kannst du auf deine gewohnte Weise arbeiten, aber die zusätzlichen Vorteile von Git nutzen, die du nicht mehr missen möchtest, sobald du in ihren Genuss gekommen bist.

Nachdem du nun weißt, was Versionskontrolle und Git ist und warum Softwareteams Git verwenden sollten, kannst du als nächstes nachlesen, welche Vorteile Git dem ganzen Unternehmen bietet.

Du möchtest mit Git arbeiten?

Sieh dir dieses interaktive Tutorial an.

Jetzt loslegen