Was ist Git? Eine Einführung in Git für Einsteiger

Profil

geschrieben von Jessica Wagner

veröffentlicht am 3. März 2022

Header-Image

Git ist wohl eines der wichtigsten Tools in der Softwareentwicklung, vor allem wenn du mit mehreren Personen an einem Projekt arbeitest, kann es dir echt das Leben erleichtern.

Was ist Git überhaupt?

Git ist eine kostenlose Verwaltungssoftware für Quellcode mit integriertem verteilten Versionskontrollsystem (VCS).
Ein Versionskontrollsystem hilft dabei auf einen älteren Entwicklungsstand wieder zurückzugreifen, ohne seine aktuellen lokalen Änderungen zu verlieren. Das ist ähnlich, wie wenn du von einem wichtigen Text mehrere Versionen dir angelegt hast. Falls Änderungen wieder rückgängig gemacht werden sollen, greifst du einfach wieder auf die vorherige Version zurück.
Verteilt bedeutet in diesem Fall, dass es sowohl einen lokalen als auch einen serverseitigen Aufbewahrungsort gibt. Diesen Aufbewahrungsort nennt man Repository. Entwickler*innen programmieren überwiegend an ihrem lokalen Repository und können dieses dann serverseitig mit ihren Teamkolleg*innen teilen.

Warum solltest du Git nutzen?

Ein Verzeichnis:
Alle Änderungen in deinem Code werden in einem Verzeichnis gespeichert: Dies führt zu einer guten Übersichtlichkeit und verhindert, dass du an mehreren Orten deine Dateien zusammensuchen musst.

Änderungen einsehen:
Es kann in Form eines Commit-Verlaufes eingesehen werden, welche Änderungen wann und von welchem Teammitglied gemacht wurden.

Rückkehr zu älteren Versionen:
Es kann wieder einfach zu den älteren Versionen deines Verlaufes zurückgekehrt werden, ohne dass der neuste Stand verloren geht.

Teamwork:
Git ist ein großer Vorteil, wenn du mit mehreren Entwicklern gleichzeitig an einem Projekt arbeiten willst. Jeder arbeitet an seiner eigenen lokalen Projektversion, diese zu einem gemeinsamen Projekt auf einem Server zusammengefasst werden können.

Weit verbreitet:
Git ist unter den Versionskontrollsystemen das beliebteste und am weitesten verbreitete. Alternativen sind zum Beispiel Subversion (SVN) oder Mercurial. Viele Softwaretools und -services sind schon bereits in Git integriert, z.B. IDEs (Entwicklungsumgebungen) wie Visual Studio Code, Git-GUIs wie Sourcetree oder die Codeverwaltungssysteme Bitbucket, GitHub oder GitLab.

Welche Tools soll ich nun verwenden?

Im Folgenden werden drei der meistgenutzten Codeverwaltungsservices vorgestellt:

Bitbucket gehört Atlassian und wurde ursprünglich für das Versionskontrollsystem Mercurial entwickelt, wurde jedoch einige Jahr später um Git erweitert. Seit 2020 wird Mercurial nicht mehr unterstützt.
Jedem Benutzer steht eine unbegrenzte Anzahl privater Repositories kostenlos zur Verfügung. Teams bis zu fünf Mitgliedern können ein kostenfreies Abonnement abschließen, größere Teams müssen einen monatlichen Beitrag zahlen.

GitHub ist eine der ältesten und populärsten Git Hosting Plattformen und gehört Microsoft. Sobald man in größeren Teams arbeitet, wird ein monatlicher Betrag verlangt. In der kostenlosen Version sind die CI/CD Nutzung für private Repos und der Lagerraum eingeschränkt.

GitLab ist eine Open Source Software von GitLab Inc.. Man kann entweder sich über den allgemeinen öffentlichen GitLab-Server registrieren oder über spezielle private Server. Auch hier gibt es mittlerweile monatliche Pläne zu kaufen neben der kostenlosen Variante, die einige zusätzliche Features bieten. GitLab ist außerdem das meist genutzte DevOps Tool.

GitHub und Bitbucket werden von dem Git-Client Sourcetree unterstützt. Dieser unterstützt beim Visualisieren und Managen deiner Repositories, Commit-Verläufe und dem Ansehen von Codeänderungen.

Die wichtigsten Begrifflichkeiten

Um mit Git arbeiten zu können, muss man sich erstmal mit mehreren der wichtigsten Begrifflichkeiten auseinandersetzen:

Repository (Repo)

Ein Repository ist ein virtueller Speicher deines Projektes. In diesem kannst du verschiedene Versionen deines Codes speichern, verwalten und bei Bedarf darauf zugreifen.

Branch
Branches sind Verzweigungen vom Ursprungspfad, dieser wird Master Branch genannt. Wenn du im Team arbeitest, helfen Branches um an mehreren Features gleichzeitig zu arbeiten.

Stage
Bevor du deine Änderungen committen kannst, musst du sie erst vormerken, dies nennt man auch stage.

Commit
Commits sind Wiederherstellungspunkte der Version, in denen du deine Änderungen abspeicherst. Neue Commits werden dem Commit-Verlauf hinzugefügt

Push
Ein Push transportiert Commits auf serverseitige Branches.

Merge
Wenn du deinen Branch wieder mit dem Master-Branch zusammenführst, wird dies mergen genannt

Fork
Der Code eines Projektes wird aus einem anderen Repository kopiert, um diesen selbst modifizieren zu können.

Pull
Ein Pull lädt die Inhalte des zentralen Repositorys auf dein lokales Repository herunter, damit beide sich auf dem gleichen Stand befinden.

Wie sieht ein Git-Workflow aus?

Um Git nutzen zu können, musst du es zuerst auf deinem Computer installieren. Du kannst es z.B. hier herunterladen. Als nächstes kannst du dann entweder über Git-Bash oder die Kommandozeile deinen Benutzernamen und deine E-Mail-Adresse konfigurieren:

 1. Repository

Im ersten Schritt wird ein Repository angelegt. Dies muss für jedes neue Projekt geschehen. Du hast die Wahl ein neues Repository anzulegen oder ein bestehendes zu klonen.

Um ein neues Repository erstellen zu können, legst du dieses entweder über einen Codeverwaltungsservice deiner Wahl an oder benutzt in der Kommandozeile in deinem Projektordner den Befehl: 

Das neue Git-Verzeichnis wird nun zusammen mit einem neuen Haupt-Branch in deinem aktuellen Arbeitsverzeichnis erstellt.

Wenn ich im Folgenden von verschiedenen Abläufen von Git über die Kommandozeile rede, ist das natürlich auch über IDEs, GUIs und Codeverwaltungsservices möglich zu managen.

Um ein bereits existierendes Repository in deinen lokalen Arbeitsspeicher zu klonen, kannst du das mit dem folgenden Befehl tun:

Der Ordner erhält den gesamten Verlauf des Remote-Repositorys und den neu erstellten Haupt-Branch.

 2.Branches

Wenn du im Team arbeitest, ist es von Nutzen, wenn nicht jeder auf dem gleichen Code arbeitet. Es ist sinnvoll für zumindest jeden Mitarbeiter einen eigenen Branch zu erstellen, damit an mehreren Features gleichzeitig gearbeitet werden kann und verhindert wird, dass im Haupt-Branch fragwürdiger Code steht.
Einen neuen Branch kannst du erstellen mit: 

Um neue Commits hinzufügen zu können, muss der neue Branch ausgewählt werden mit:

 3.Vormerken und Committen

Willst du Änderungen an deiner Dateiversion hochladen, musst du diese zuerst vormerken (stage) und kannst sie danach committen.
Dateien vormerken kannst du mit dem Befehl:

Willst du alle Dateien auf einmal vormerken, kannst du das tun mit:

Um die vorgemerkten Dateien zu committen, kannst du einfach den Befehl ausführen:

Wichtig ist in diesem Schritt auch immer eine Commit-Message hinzuzufügen, die selbsterklärend für deine Teammitglieder ist.

 4.Pushen

Nachdem du deine Änderungen committet hast, kannst du diese auf das Remote-Repository verschieben mit dem Befehl: 

Remote bedeutet hier, dass dies das serverseitige, nicht dein lokales Repository ist. Die Remote-Verbindung wird standardmäßig „origin" genannt.
Wenn du ein Repository geklont hast, besitzt du bereits ein Remote-Repository. Wenn du aber ein neues angelegt hast, musst du erst ein Remote-Repository erstellen und einen Upstream-Branch für deine lokalen Branches anlegen.

 5.Pullen

Um Inhalte aus dem Remote-Repository auf dein lokales Repository herunterzuladen, wird der Befehl

verwendet, damit die Inhalte beider Repositories übereinstimmen.
Git pull ist dabei eigentliche eine Kombination aus den beiden Befehlen git fetch und git merge. Mit git fetch werden die Inhalte des Remote-Branches heruntergeladen und git merge fügt die Inhalte des Remote-Branchs mit denen des lokalen Branches zusammen.
Man könnte also statt git pull verwenden: 

Dies ist nur ein kleiner Einblick, in was Git alles kann. Es gibt noch sehr viele weitere Funktionalitäten.
Der beste Guide, den ich dazu gefunden habe, ist der von Atlassian.
Aber bereits mit diesem kurzen Einblick solltest du in der Lage sein Git nutzen zu können.

Falls du Interesse hast, kannst du gerne noch mein Video zu Git, das ich im Rahmen meines Studiums angefertigt habe, dir anschauen.

Photo by Yancy Min on Unsplash

Author

Jessica Wagner

Ein Projekt im Sinn?

Sprecht uns an!