Git für Einsteiger: Mehr als diese Befehle brauchst du nicht

Alle wichtigen Befehle, die du bei der Verwendung von Git brauchst. (Foto: Postmodern Studio / Shutterstock.com)
Git ist ein Versionskontrollsystem, das im Bereich der Entwicklung unabdingbar geworden ist. Es hilft euch, die Übersicht über die Historie eures Codes zu behalten. Damit kann ein alter Stand einfach wieder hergestellt werden. Auch die Zusammenarbeit mit anderen Entwicklern wird dadurch vereinfacht.
Wer allerdings in das Thema einsteigt, kann sich schnell überfordert fühlen. Bevor du versuchst, dich auf den erstbesten grafischen Git-Client zu stürzen, solltest du Folgendes beachten: Sie haben häufig den Nachteil, dass du keinen richtigen Überblick über die ausgeführten Befehle hast. Wenn irgendwo etwas falsch ausgeführt wurde oder manuell angepasst werden muss, dann kannst du nur schwer eingreifen. Deshalb kann man alle nötigen Git-Befehle auch über das Terminal ausführen. Wir haben dir eine einfache Übersicht zusammengestellt mit allem, was du brauchst, damit dein Git-Einstieg gelingt.
Git-Projekt aufsetzen
Navigiere in deinem Terminal zu deinem Projekt beziehungsweise in das Verzeichnis, in dem dein Projekt liegen soll. Nun kannst du ein neues Git-Repository aufsetzen:
git init
Falls bereits ein lokales oder entferntes Repository existiert, kannst du es ganz einfach in den gewünschten Ordner kopieren.
# lokaler Klon
git clone /pfad/lokales/repo /pfad/ziel
# entfernter Klon
git clone https://gitExample.com/user/repository.git
Das ist auch über SSH ist möglich, wenn du einen SSH-Key angelegt hast.
git clone user@server:/pfad.git
Remote Repositories
Generell werden erstmal alle Repositories, die nicht lokal sind, als Remote Repository bezeichnet. Dein geklontes Repository heißt origin. Du kannst zusätzlich weitere Repositories bekanntmachen, um damit Dateien auszutauschen.
# Fügt Repository von url mit name hinzu
git remote add name url
# Zeigt Liste aller bekanntgemachten Repositories
git remote
Falls du bislang nur mit git init
ein lokales Repository erstellt hast, kannst du ein entferntes Repository bekanntmachen, indem du ein Remote Repository mit dem Namen origin hinzufügst.
git remote add origin https://gitExample.com/user/repository.git
Änderungen hochladen
Dein lokales Repository umfasst nicht nur deine Dateien. Es gibt den Head, der sich deinen letzten Commit merkt, sowie den Stage, wo deine Dateien landen, wenn du sie mit dem Add-Befehl vormerkst. Dateien in dein entferntes Repository kannst du folgendermaßen hochladen:
1. Geänderte Dateien zum Stage hinzufügen
git add datei # Fügt einzelne datei hinzu
git add * # Fügt alle geänderten Dateien hinzu
2. Commit mit Dateien aus dem Stage erstellen
git commit -m "nachricht"
# Der 1. Schritt kann übersprungen werden,
# wenn alle geänderten Dateien hinzugefügt werden sollen
git commit -a -m "nachricht"
3. Zum entfernten Repository pushen
# Pusht deinen Commit auf branch zum Repository remote
git push remote branch
# Pusht auf Master-Branch zum Origin-Repository
git push origin master
Warum du mehr als einen Branch brauchst
Wie du am Push-Befehl erkennen kannst, muss immer ein Branch angegeben werden. Beim Erstellen eines Git-Repositorys gibt es standardmäßig immer einen Master-Branch. Von diesem ausgehend kannst du jedoch weitere Branches erstellen, dort Änderungen unabhängig vom Master-Branch pushen und später wieder zusammenführen (mergen). Das ist vor allem dann sinnvoll, wenn du mit mehreren Entwicklern an einem Projekt arbeitest. So könnte es verschiedene Feature-Branches geben, wodurch jeder unabhängig und ausgehend von einer bestimmten Code-Version arbeiten kann.
# Erstellt einen neuen Branch mit dem Namen feature
# und wechselt direkt zu diesem
git checkout -b feature
# Branches löschen funktioniert mit dem Branch-Befehl
git branch -d feature
# Den Branch wechseln (hier zum Branch master)
git checkout master
Wenn du einen Branch erstellst, ist er zunächst nur lokal verfügbar. Um ihn auch auf dem entfernten Repository zur Verfügung zu stellen, greifst du erneut auf den Push-Befehl zurück.
# Pusht den Branch feature auf das Repository origin
git push origin feature
Lokales Repository auf den neusten Stand bringen
Wenn andere Projektteilnehmer:innen (oder du selbst von einem anderen Computer aus) Änderungen am entfernten Repository vorgenommen haben und du dein lokales Repository auf den neuesten Stand bringen willst, musst du die Dateien fetchen.
# Lädt Änderungen vom Repository origin herunter
git fetch origin
# Führt Änderungen mit dem Branch master zusammen
git merge origin/master
# Kann auch in einem Befehl ausgeführt werden
git pull origin master
Mergen und Konflikte lösen
Weiter oben haben wir bereits den merge
-Befehl eingeführt. Er kann auch genutzt werden, um zwei Branches zusammenzuführen:
# Der Branch feature wird mit dem aktuellen Branch zusammengeführt
git merge feature
Der merge
-Befehl kann allerdings auch Konflikte verursachen (kann auch beim Pull-Befehl auftreten). Das passiert häufig dann, wenn in zwei Branches Änderungen an derselben Datei durchgeführt wurden. Git versucht das selbst zu lösen, sofern das möglich ist. Falls es jedoch fehlschlägt, erhältst du eine Meldung und Git kommentiert an den entsprechenden Code-Stellen die gefundenen Konflikte. Diese müssen dann manuell gelöst werden. Danach musst du die Änderungen wieder wie in den drei oben beschriebenen Schritten hochladen.
Zusätzliche Befehle
Deine Nutzerdaten anpassen
Du kannst die Nutzerinformationen, die beispielsweise bei den Commits in Github stehen, leicht anpassen:
# Passe deine Nutzerinformationen an
git config --global user.name "Max Mustermann"
git config --global user.email max@mustermann.de
Fehler rückgängig machen
Wenn du eine Datei lokal geändert und noch nicht mit dem Add-Befehl an den Stage geschickt hast, kannst du sie mit einem Befehl zurücksetzen:
git checkout -- dateiname
Willst du alle lokalen Änderungen aller geänderten Dateien (hier auf dem Master-Branch) mit den vorherigen Dateien auf dem Remote-Repository (hier origin) überschreiben, benötigst du zwei Befehle:
git fetch origin
git reset --hard origin/master
Übersicht verschaffen
Mit folgendem Befehl kannst du dir eine Übersicht über alle lokal geänderten und gelöschten Dateien verschaffen.
# Relativ unübersichtlich
git status
# Einfachere Listen-Ansicht
git status -s
Für den umfassenden Überblick könnt ihr euch via gitk
alle Branches und Commits in einer grafischen Ansicht darstellen lassen.