git ist das meistgenutzte Versionsverwaltungssystem der Welt. Es protokolliert jede Änderung an Dateien, ermöglicht paralleles Arbeiten im Team und macht fehlerhafte Änderungen rückgängig. Ein Repository (Repo) ist der Ordner, in dem git den gesamten Verlauf speichert.

Erste Schritte: Repository anlegen

git init

Macht das aktuelle Verzeichnis zu einem git-Repository. Alternativ ein bestehendes Projekt kopieren: git clone https://github.com/benutzer/projekt.git.

Der Grundzyklus: Status, Staging, Commit

git status
git add datei.txt
git commit -m "Nachricht"
  • git status — zeigt geänderte Dateien und den aktuellen Zustand
  • git add — Dateien in die Staging-Area legen („vorbereiten"); git add . nimmt alle Änderungen
  • git commit -m "..." — Änderungen mit Nachricht dauerhaft im Verlauf speichern
  • git log --oneline — kompakte Liste aller Commits
  • git diff — zeigt ungestagete Änderungen im Detail

Branches: parallele Entwicklungslinien

git branch feature
git checkout feature

Ein Branch ist eine eigene Arbeitskopie des Projekts. Neue Features entstehen auf eigenen Branches, ohne den Hauptzweig (main) zu stören. Komfortabler als das alte git checkout ist git switch feature (Branch wechseln) und git switch -c neu (Branch anlegen und wechseln).

Mit Remote-Repositories arbeiten

git push origin main
git pull

git push lädt lokale Commits auf den Server (z.B. GitHub), git pull holt Änderungen der anderen und führt sie zusammen. git fetch holt nur, ohne zusammenzuführen.

  • git remote -v — zeigt die eingerichteten Remote-Adressen
  • git merge branch — einen Branch in den aktuellen Zweig übernehmen
  • git revert <commit> — einen Commit rückgängig machen, ohne die Geschichte umzuschreiben
  • git reset --hard HEAD — alle uncommitteten Änderungen verwerfen (Vorsicht!)

Praxis-Tipp

Commits klein und verständlich halten, .gitignore für Build-Artefakte und Passwörter nutzen, und vor dem Pushen immer git status prüfen. Bei Konflikten zeigt git merge die betroffenen Dateien mit Markern (<<<<<<<), die man manuell auflöst.

Verwandte Grundlagen: ssh, scp und rsync und curl und wget.