Git


Git ist ein verteiltes Versionskontrollsystem von Dateien, das als Open Source Software unter der GNU General Public License für Entwickler auf der ganzen Welt verfügbar ist. Es wird sowohl von Branchengrößen wie Google, Facebook und Microsoft als auch von vielen unabhängigen, quelloffenen Projekten wie GitHub, Open Compute Project oder MediaWiki verwendet. Geschrieben wurde Git in der Programmiersprache C. Ursprüngliches Ziel war es, die Arbeit mit dem Quellcode des Linux-Kernels, großen Datenmengen und vielen beteiligten Entwicklern zu vereinfachen.

Geschichte[Bearbeiten]

Linus Torvalds entwickelte die Idee zu Git, als die Versionskontrollsoftware BitKeeper proprietär wurde und somit nicht mehr frei verfügbar war. Die Entwickler von BitKeeper änderten die Lizenz, unter der die Software vertrieben wurde. Daraufhin begann Torvalds mit der Entwicklung einer eigenen Lösung, um gleichzeitig seine hohen Ansprüche an ein verteiltes Dateiverwaltungssystem umsetzen zu können. Dabei ging es ihm in erster Linie um verschiedene Performance-Eigenschaften, die ihm bei der Arbeit am Quellcode des Linux-Kernels wichtig geworden waren.[1]

  • Git sollte ein verteiltes, dezentrales System sein, das nicht wie ein herkömmliches Concurrent Versions System (CVS) mit dem Client-Server-Prinzip arbeitete. Stattdessen wurde auf ein Peer-to-Peer-System gesetzt, das den Datentransfer zudem über unterschiedliche Protokolle realisieren konnte.
  • Git sollte ähnliche Arbeitsabläufe ermöglichen wie BitKeeper und auch nicht-lineare Workflows sowie moderne Paradigmen der Softwareentwicklung (Agile Softwareentwicklung, Kanban oder Scrum) integrieren und unterstützen können.
  • Git sollte Dateien vor unbefugtem Zugriff und unbeabsichtigten Veränderungen zuverlässig schützen.

Im April 2005 wurde die erste Version von Git veröffentlicht. Projektverantwortlicher war ab Juni 2005 Junio Harmano, der heute für Google arbeitet. Mittlerweile liegt Git in der Version 2.6.1 vor und ist in allen linuxartigen Betriebssystemen nutzbar. Für Windows und OS X gibt es entsprechende Portierungen. Die Git Software wird darüber hinaus als Grundlage für CMS und Wikis benutzt, da sie Eigenschaften einer einfach strukturierten Datenbank aufweist.[2] Auf Basis von Git wurde GitHub ins Leben gerufen – ein Hosting-Dienst, der Git um Kollaborationstools für eine Vielzahl von Entwicklern ergänzt.[3]

Funktionsweise[Bearbeiten]

Die Git Software basiert als Konzept auf sechs Prinzipien, die sich wesentlich von anderen Versionsverwaltungssystemen unterscheiden.[4]

  • Branching and Merging: Als Branching wird das Erzeugen neuer Entwicklungszweige verstanden, Merging ist die Zusammenführung von zwei oder mehreren Zweigen. Git ist strukturell wie ein Hash-Baum oder Merkle Tree aufgebaut, bei dem die Blätter Hash-Werte von Datenblöcken und die oberen Knoten die Hash-Werte ihrer Kinder sind. Die Datenstruktur erlaubt einerseits eine effiziente Handhabe von Dateien, weil Daten anders betrachtet werden, und andererseits ein hohes Maß an kryptologischer Sicherheit, weil für die Daten Prüfsummen verwendet werden.
  • Small and Fast: Git ist ein dezentrales System, das Dateien als Repository auf einem lokalen Rechner speichert. Selbst sehr große Repositories können auf diese Weise bearbeitet werden, da Aktualisierungen zunächst nur auf dem lokalen Rechner gespeichert werden und keine Kommunikation mit einem zentralen Server notwendig ist. Bei der Entwicklung von Git wurde auf das KISS-Prinzip (Keep it simple and short) Wert gelegt, sodass Git in Benchmarks mit anderen Systemen zwischen 1 und 325 mal schneller ist.[5]

Git.png

  • Distributed: Wesentlich für Git ist die dezentrale Struktur. Das Programm klont ein Repository, bevor es durch einen Entwickler verändert wird. Jeder Entwickler hat eine solche Kopie lokal gespeichert. Fällt eine Kopie aus oder gibt es einen böswilligen Angriff auf Dateien, können sowohl die Kopie als auch einzelne Dateien wieder hochgeladen werden. Diese verteilte Struktur ermöglicht ganz verschiedene Workflows wie Shared Repository, Blessed Repository oder die Integration großer Entwicklungsteams, die nach modernen Programmierparadigmen arbeiten.
  • Data Assurance: Die Sicherheit der Daten wird dadurch hergestellt, dass jede Datei und jedes Commit (eine ID einer speziellen Dateiversion) mithilfe von Prüfsummen verglichen werden. So wird sichergestellt, dass sich die Daten nicht durch Dritte verändern lassen und die eigenen Änderungen auf den Daten aufbauen, die der Entwickler anfangs eingegeben hat. Im Grunde erhält jede Änderung eine eigene ID, um die Historie eines Projektes nicht zu manipulieren und den Lebenszyklus des Projektes nachzeichnen zu können.
  • Staging Area: Die Staging Area erlaubt die Verwaltung unterschiedlicher Commits, sodass sie formatiert und begutachtet werden können – ohne aber das Arbeitsverzeichnis verändern zu müssen. Auf diese Weise können mehrere Bereiche des Quellcodes oder einzelne Dateien verändert werden, sodass sich die Änderungen nur auf ausgewählte Commits beziehen und nicht auf alle Dateien.
  • Free and Open Source: Die aktuelle Version von Git wurde unter der GNU General Public License version 2.0 veröffentlicht, um freie Software für alle Nutzer verfügbar zu machen. Nichtsdestotrotz unterliegen die Logos und der Begriff Git bestimmten Markenrichtlinien, die unter der Git Trademark Policy eingesehen werden können.[6]

Bedeutung für die Programmierung[Bearbeiten]

Git gilt als State of the Art-Lösung zur dezentralen Verwaltung von Dateien und Quellcode. Das Programm wird nicht nur von großen Unternehmen, sondern auch von einer Vielzahl unabhängiger Entwickler verwendet. Innerhalb der ersten zehn Jahre entwickelte sich Git zu einer der am meisten verwendeten Technologien im IT-Sektor. Der Fokus auf das dezentrale Versionsmanagement sorgte zudem dafür, dass Git als Paradebeispiel für Tools der modernen Softwareentwicklung steht. Insbesondere sind hier Programmier- und Entwicklungsparadigmen zu nennen, die sich erst in den letzten zehn bis fünfzehn Jahren entwickelt haben: Die agile Softwareentwicklung und ihre unterschiedlichen Methoden. Git stellt als verteilte Versionskontrolle einen idealen Partner für derartige Softwareentwicklungen dar und löste konkurrierende Modelle wie Subversion, Mercurial oder Baazar mit der Zeit ab.[7]

Einzelnachweise[Bearbeiten]

  1. Vor 10 Jahren: Linus Torvalds baut Git heise.de. Abgerufen am 19.10.2015
  2. Gollum github.com. Abgerufen am 19.10.2015
  3. Git itwissen.info. Abgerufen am 19.10.2015
  4. Git About github.com. Abgerufen am 19.10.2015
  5. Small and Fast git-scm.com. Abgerufen am 06.10.2015
  6. Git Trademark Policy git-scm.com. Abgerufen am 06.10.2015
  7. Status quo der Versionskontrolle heise.de. Abgerufen am 19.10.2015

Weblinks[Bearbeiten]