· 

git vs. GitHub

Naaa, was git hub? Und damit herzlich willkommen zu diesem Artikel, in dem wir die Frage klären, welche Unterschiede und Gemeinsamkeiten es zwischen git und GitHub gibt. Diese beiden Begriffe hast du bestimmt schon einmal gehört, oder? Viele denken, dass es sich hierbei um dasselbe handelt, aber weit gefehlt! Bevor wir jedoch tiefer ins Detail gehen, schauen wir uns zuerst einmal an, was man unter git versteht.


Was ist git?

Stelle dir dafür vor, du mächtest zusammen mit einem Kollegen ein Spiel programmieren. Wie du dir sicherlich denken kannst, ist das ein ziemlich umfangreiches Projekt mit hunderten, wenn nicht sogar tausenden Dateien, die am Ende zusammengeführt werden müssen. Da ihr zu zweit an dem Projekt arbeitet, bietet es sich natürlich an, arbeitsteilig vorzugehen. Im späteren Berufsleben ist das auch nicht anders: Da wirst du nicht komplett alleine einen Triple A Titel von der Pike auf selbst programmieren, sondern Teammitglieder haben, die das Character Design erstellen, die Musik komponieren, die Landschaften kreieren oder den Code schreiben, der eine sinnvolle Interaktion aller Komponenten untereinander ermöglicht. Damit TEAM nicht zu "Toll, Ein Anderer Macht's" wird, muss sich jeder in dem Projekt aktiv einbringen.

Eine erste Version des Projekt könnte dann z. B. so aussehen:

Bislang ist der Projektordner noch ziemlich leer. Wir haben eine Bilddatei für den Hintergrund des ersten Levels, eine Musikdatei und ein kleines Python-Skript. Diesen Stand nennen wir Version 1.0. Der Musiker unter euch hat sich auf einmal ziemlich ins Zeug gelegt und zwei Soundeffekte, sowie eine weitere Hintergrundmusik produziert. Diesen Stand nennen wir Version 2.0.

In einer Version 3.0 sind ein Hintergrundbild von dem Künstler und zwei Skripte von dir hinzugekommen. Der Musiker hat sich jedoch dazu entschieden, einen Soundeffekt zu entfernen. Damit man auch später noch auf die älteren Versionen in FOrm einer Backup-Historie zugreifen kann und Veränderungen rückgängig machen kann, wäre es sinnvoll eine Art Versionsverwaltung zu etablieren und genau das ermöglicht git. Die unterschiedlichen Versionen können damit in einem sogenannten Repository zusammengefügt werden, mit dem ihr als Team gemeinsam arbeiten könnt. 

Auch wenn es ein zentrales Repository für jedes Projekt gibt, können sich die einzelnen Projektmitglieder eine lokale Kopie des Repositories auf ihr Arbeitsgerät ziehen. 

Das hat den Vorteil, dass man auch ohne Internetanbindung an seinem Projekt weiterarbeiten kann, was besonders in Regionen mit unzuverlässigem Internet essentiell ist.

Die unterschiedlichen Versionen in den verschiedenen Repositories kann man dann bei Bedarf mergen.


Unterschiede zwischen git und GitHub

Was ist nun aber GitHub? Nun, GitHub ist nichts anderes als ein Hoster für git. Damit ist es möglich git-Projekte in der Cloud oder im Web zu hosten. Mit GitHub kann man also auch Versionen von Software-Projekten verwalten, zu älteren Versionen zurückkehren, branchen, mergen und generell im Team mit mehreren Leuten gleichzeitig arbeiten. Der Unterschied ist eben, dass git auf der lokalen Maschine läuft und GitHub in der Cloud bzw. im Web git hostet. Das kann man sich an einem einfachen git-Befehl klarmachen, der ein Repository klont, um damit lokal arbeiten zu können. 

git clone

Der Befehl git startet git. Danach wird der clone Befehl abgesetzt, der ein Repository klonen soll.

Während git eine Software ist, stellt GitHub einen Service zur bereit.

2005 wurde git in seiner ersten Version released. Drei Jahre später im Jahr 2008 wurde die Firma GitHub gegründet, die 2018 von Microsoft gekauft wurde und seitdem eine Tochter des Software-Konzerns ist. git wiederum wurde von Linus Torvalds initiiert und gehört zur Linux Foundation

git ist Open Source und kann auf GitHub heruntergeladen werden. Auf GitHub kann zwar Open Source Software kostenlos zur Verfügung gestellt werden, doch GitHub selbst ist nicht Open Source. Da gehen die Kinder des Schuhmachers wohl Barfuß auf die Straße. Man hat zudem die Möglichkeit, für Projekte, die nicht Open Source sein sollen, GitHub als Hoster zu verwenden. Das ist aber wiederum nicht kostenlos, allerdings kommt man dann in den Genuss diverser Features, die git nicht out of the Box zur Verfügung stellt. Dazu zählen bspw. User Management Features und ein Marktplatz für Tool-Integrationen.

Während bei git Code Sharing im Vordergrund steht, versteht sich GitHub vor allem als Plattform für zentralisiertes Code Hosting, das  weitere Kollaborationsfunktionen wie Projekt- und Support-Ticket-Management, sowie Bug Tracking zur Verfügung stellt.

git ist übrigens kommandozeilenbasiert, d. h. man verwendet z. B. die Eingabeaufforderung oder das Terminal, um zu committen, zu pushen, zu clonen, zu pullen, zu fetchen, zu mergen usw. Insgesamt gibt es über 100 git Befehle, die teilweise noch dazu über sehr viele Kommandozeilenparameter verfügen.

Sowohl git, als auch GitHub stellen eine Desktop-Version zur Verfügung. Bei git nennt sie sich (gamz einfallsreich) "git GUI" und bei GitHub heißt sie (ebenfalls sehr einfallsreich) "GitHub Desktop". Darüber hinaus gibt es noch weitere GUIs für gitGitHub wird aber auch häufig im Web verwendet und bietet eine grafische Oberfläche. Wenn du dir z. B. den Code von einem Repository holen möchtest, kannst du das über den bereits erwähnten Befehl 

git clone

machen oder du lädst ihn dir direkt über die Web-Oberfläche durch einen Klick auf den grünen Button Code als ZIP-Datei herunter.

Du kannst das Repository allerdings auch im GitHub Desktop Client öffnen

oder das GitHub Command Line Interface (CLI) nutzen. Der Befehl lautet für das git Repository auf GitHub

gh repo clone git/git

Zusammenfassung

Hier sind noch einmal alle wichtigen Gemeinsamkeiten und Unterschiede in einer übersichtlichen Grafik zusammengefasst.


Quellen