Versionskontrolle mit Git

Medium · 25 min · Kostenlos

Ziel & Lerninhalt

Nutze Git um Arduino-Sketches versioniert zu speichern und Experimente sicher rückgängig zu machen.

  • Ein Git-Repository initialisieren und erste Commits erstellen.
  • Branches für Experimente nutzen ohne den Hauptcode zu gefährden.
  • Änderungen mit git diff nachvollziehen.

Erklärung & Wissen

Basic

Stell dir vor, du hast ein ProtoPeaks-Projekt wochenlang verbessert – und dann probierst du eine Änderung, die alles kaputt macht. Ohne Git: Du versuchst, die Änderung rückgängig zu machen und erinnerst dich nicht mehr genau. Mit Git: Du schreibst `git checkout main` und hast sofort den letzten funktionierenden Stand zurück. Git speichert Snapshots deines Codes (Commits) mit Zeitstempel und Nachricht. Du kannst zu jedem Commit zurück, Versionen vergleichen und parallel Experimente laufen lassen.

Medium

Die fünf wichtigsten Git-Befehle: (1) `git init` – Repository erstellen. (2) `git add datei.ino` – Datei zum nächsten Commit vormerken. (3) `git commit -m 'Servo funktioniert'` – Snapshot speichern. (4) `git log` – Alle Commits anzeigen. (5) `git checkout <commit-hash>` – Zu altem Stand zurück. Branch-Workflow für Experimente: `git branch experiment` → `git checkout experiment` → ausprobieren → wenn gut: `git merge experiment` → wenn schlecht: `git checkout main` (Experiment verworfen, main unberührt).

Expert

Git speichert keine Dateiversionen, sondern Differenzen (Diffs). Jeder Commit enthält nur die Änderungen seit dem letzten Commit, plus einen SHA-1-Hash als eindeutigen Fingerabdruck. Dadurch sind auch große Repositories mit tausenden Commits kompakt. Für Arduino: .gitignore-Datei erstellen und Build-Artefakte ausschließen (`*.o`, `*.elf`, `build/`). Remote-Repositories (GitHub, GitLab): `git push` sichert Commits in die Cloud – Backup und Zusammenarbeit in einem. GitHub Actions kann sogar automatisch prüfen ob dein Code kompiliert.

Fun Fact

Linus Torvalds – Erfinder des Linux-Kernels – schrieb Git in nur zwei Wochen im April 2005. Grund: Das vorher verwendete Versionskontrollsystem BitKeeper wurde kostenpflichtig. Torvalds war so unzufrieden damit, dass er lieber ein neues, besseres System von Grund auf baute.

Repository (Repo)
Ordner, in dem Git alle Versionen und die gesamte Änderungshistorie speichert. Ein Repo besteht aus dem sichtbaren Arbeitsverzeichnis und dem versteckten `.git`-Ordner. Darin speichert Git alle Commits als komprimierte Objekte (Blobs, Trees, Commits). SHA-1-Hash sichert Integrität – jede Änderung an einem Commit-Objekt ändert seinen Hash und damit alle nachfolgenden.
Commit
Dauerhafter Snapshot des Codes zu einem bestimmten Zeitpunkt mit Beschreibung. Jeder Commit hat: Autor, Zeitstempel, Commit-Nachricht, Zeiger auf vorherigen Commit und SHA-1-Hash aller Dateiinhalte. Gute Commit-Nachrichten: Was wurde geändert und warum – nicht wie. Statt 'Fix' besser 'Servo-Winkel-Limit auf 170° reduziert um Endanschlag zu vermeiden'.
Branch
Paralleler Entwicklungsstrang – für Experimente ohne Auswirkung auf den Hauptcode. Ein Branch ist ein leichtgewichtiger Zeiger auf einen Commit. Erstellen ist kostenlos (keine Kopie). `git branch experiment` erstellt den Zeiger, `git checkout experiment` wechselt dorthin. Änderungen im Branch beeinflussen main nicht. `git merge` fasst beide Branches zusammen, `git rebase` schreibt die Branch-Commits auf main auf.
.gitignore
Datei, die Git mitteilt, welche Dateien nicht versioniert werden sollen. Build-Artefakte (*.o, *.elf, build/) und IDE-Einstellungen (.vscode/, .idea/) gehören nicht ins Repo. Sie sind von Maschine zu Maschine unterschiedlich oder können jederzeit neu generiert werden. github.com/github/gitignore bietet fertige .gitignore-Vorlagen für Arduino und viele andere Technologien.

Praktische Übung: Git-Repository für dein ProtoPeaks-Projekt einrichten

Richte ein lokales Git-Repository für deinen Arduino-Sketch ein und mache deinen ersten Commit.

  1. Git installieren und konfigurieren

    Installiere Git. Öffne Terminal/Eingabeaufforderung. Konfiguriere Name und E-Mail: `git config --global user.name 'Dein Name'` und `git config --global user.email 'deine@email.de'`

    Check: `git --version` gibt eine Versionsnummer aus.

    Tipp: Windows: git-scm.com/download/win. Mac: Homebrew `brew install git`. Linux: `apt install git`.

  2. Repository initialisieren

    Öffne das Verzeichnis deines Arduino-Sketches im Terminal. Führe `git init` aus. Ein versteckter `.git`-Ordner wird erstellt – das ist die Datenbank aller Versionen.

    Check: `.git`-Ordner existiert im Sketch-Verzeichnis.

    Tipp: Navigiere zuerst mit `cd` zum Sketch-Ordner, dann `git init`.

  3. .gitignore erstellen

    Erstelle eine Datei `.gitignore` mit folgendem Inhalt: `build/` (neue Zeile) `*.o` (neue Zeile) `*.elf`. Diese Dateien werden von Git ignoriert.

    Check: `.gitignore`-Datei existiert mit build/-Eintrag.

    Tipp: Texteditor öffnen, Inhalt eingeben, als `.gitignore` (mit Punkt am Anfang) speichern.

  4. Ersten Commit erstellen

    Füge alle Dateien hinzu: `git add .` (Punkt bedeutet alle). Erstelle den Commit: `git commit -m 'Initial: Servo-Grundprogramm funktioniert'`. Prüfe mit `git log`.

    Check: `git log` zeigt einen Commit mit deiner Nachricht.

    Tipp: Commit-Nachricht aussagekräftig wählen: Was ist der aktuelle Stand?

  5. Experiment-Branch anlegen

    Erstelle einen Experiment-Branch: `git checkout -b experiment`. Ändere etwas im Code (z.B. Servo-Geschwindigkeit). Committe die Änderung. Wechsle zurück: `git checkout main`. Der Code ist wieder wie vorher.

    Check: `git branch` zeigt main und experiment.

    Tipp: `git checkout -b experiment` erstellt und wechselt in einem Schritt.

Kein Versuchsaufbau – Terminal-Übung.

# Git-Grundbefehle Cheatsheet
# Initialisieren
git init

# Status prüfen
git status

# Datei vormerken
git add mein_sketch.ino

# Commit erstellen
git commit -m 'Beschreibung der Änderung'

# Verlauf anzeigen
git log --oneline

# Unterschiede anzeigen
git diff

# Zu altem Stand zurück
git checkout <hash>

# Branch erstellen
git checkout -b experiment
  • 'git' wird nicht als Befehl erkannt. — Git nicht in PATH. Neu starten nach Installation. Windows: Git Bash verwenden statt normaler Eingabeaufforderung.
  • 'Please tell me who you are' Fehler beim Commit. — Name und E-Mail noch nicht konfiguriert. Die zwei git config Befehle aus Schritt 1 ausführen.

Kurzzusammenfassung

Git speichert Snapshots deines Codes als Commits. Branches ermöglichen risikolose Experimente. Fünf Befehle reichen für den Anfang: init, add, commit, log, checkout. Gute Commit-Nachrichten sind investierte Zukunft.

Ähnliche Themen