← Zurück

Git Grundlagen – Versionskontrolle verstehen

git versionskontrolle anfänger entwicklung

Git Grundlagen – Versionskontrolle verstehen

Git ist das wichtigste Tool für Entwickler. Es speichert jede Änderung an deinem Code, sodass du jederzeit zurückgehen kannst. Dieses Guide erklärt die Grundlagen.


Was ist Git?

Stell dir vor, du schreibst einen Text und speicherst jeden Tag eine Kopie: - bewerbung_v1.doc - bewerbung_v2.doc - bewerbung_final.doc - bewerbung_final_wirklich.doc - bewerbung_final_final.doc

Git macht das automatisch und intelligent.

Es speichert: - Jede Änderung (Commit) - Wer sie gemacht hat - Wann sie gemacht wurde - Warum sie gemacht wurde (Commit-Message)

Und du kannst jederzeit zu jedem früheren Zustand zurück.


Git installieren

Ubuntu/Debian

sudo apt install git -y

Konfigurieren

# Name und E-Mail setzen (wird bei Commits gespeichert)
git config --global user.name "Dein Name"
git config --global user.email "deine@email.com"

# Standard-Branch auf "main" setzen
git config --global init.defaultBranch main

# Config prüfen
git config --list

Dein erstes Repository

Neues Repository erstellen

# Ordner erstellen
mkdir mein-projekt
cd mein-projekt

# Git initialisieren
git init

Das war's! Jetzt ist der Ordner ein Git-Repository. Git hat einen versteckten .git Ordner erstellt, in dem alle Änderungen gespeichert werden.

Bestehendes Repository klonen

git clone https://github.com/username/repository.git
cd repository

Der Git-Workflow

Git hat drei "Bereiche":

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│  Working Dir    │───▶│  Staging Area   │───▶│   Repository    │
│  (Deine Files)  │    │   (git add)     │    │   (git commit)  │
└─────────────────┘    └─────────────────┘    └─────────────────┘
  1. Working Directory: Deine Dateien, die du bearbeitest
  2. Staging Area: Änderungen, die du für den nächsten Commit vorgemerkt hast
  3. Repository: Alle gespeicherten Commits

Änderungen speichern (Commit)

Schritt 1: Status prüfen

git status

Zeigt dir: - Neue Dateien (untracked) - Geänderte Dateien (modified) - Zum Commit vorgemerkte Dateien (staged)

Schritt 2: Dateien zur Staging Area hinzufügen

# Eine Datei
git add datei.txt

# Mehrere Dateien
git add datei1.txt datei2.txt

# Alle geänderten Dateien
git add .

# Interaktiv auswählen
git add -p

Schritt 3: Commit erstellen

git commit -m "Beschreibung der Änderung"

Gute Commit-Messages: - ✅ "Fix: Login-Fehler bei falscher E-Mail behoben" - ✅ "Feature: Benutzer-Registrierung hinzugefügt" - ❌ "Update" - ❌ "Fix" - ❌ "asdfasdf"

Shortcut: add + commit

# Alle getrackten Dateien committen
git commit -am "Beschreibung"

Änderungen anschauen

Was wurde geändert?

# Ungestagete Änderungen
git diff

# Gestagete Änderungen
git diff --staged

# Bestimmte Datei
git diff datei.txt

Commit-Historie

# Alle Commits
git log

# Kompakte Ansicht
git log --oneline

# Mit Grafik (Branches)
git log --oneline --graph --all

# Letzte 5 Commits
git log -5

Mit Remote-Repository arbeiten (GitHub/GitLab)

Remote hinzufügen

git remote add origin https://github.com/username/repo.git

# Prüfen
git remote -v

Änderungen hochladen (Push)

# Erster Push (Branch verknüpfen)
git push -u origin main

# Danach reicht
git push

Änderungen herunterladen (Pull)

git pull

Repository klonen

git clone https://github.com/username/repo.git

Branches (Verzweigungen)

Branches erlauben es, parallel an Features zu arbeiten, ohne den Hauptcode zu beeinflussen.

Branch erstellen und wechseln

# Neuen Branch erstellen
git branch feature-login

# Zu Branch wechseln
git checkout feature-login

# Oder beides in einem
git checkout -b feature-login

Branches anzeigen

# Lokale Branches
git branch

# Alle Branches (inkl. Remote)
git branch -a

# Aktueller Branch
git branch --show-current

Branch mergen

# Zurück zum Hauptbranch
git checkout main

# Feature-Branch einmergen
git merge feature-login

# Branch löschen (nach dem Merge)
git branch -d feature-login

Änderungen rückgängig machen

Letzte Änderung an Datei verwerfen

git checkout -- datei.txt
# oder
git restore datei.txt

Datei aus Staging entfernen

git reset HEAD datei.txt
# oder
git restore --staged datei.txt

Letzten Commit ändern

# Message ändern
git commit --amend -m "Neue Message"

# Dateien zum letzten Commit hinzufügen
git add vergessene-datei.txt
git commit --amend --no-edit

Zum vorherigen Commit zurück

# Soft: Änderungen bleiben erhalten
git reset --soft HEAD~1

# Hard: Änderungen werden gelöscht!
git reset --hard HEAD~1

.gitignore – Dateien ignorieren

Manche Dateien sollen nicht ins Repository: - Passwörter und Secrets - Node Modules - Build-Ordner - IDE-Einstellungen

Erstelle eine .gitignore Datei:

# Ordner ignorieren
node_modules/
__pycache__/
.venv/
dist/
build/

# Dateien ignorieren
.env
*.log
*.pyc
.DS_Store

# Außer diese Datei
!wichtig.log

SSH-Key für GitHub/GitLab

Damit du nicht jedes Mal das Passwort eingeben musst:

# Key erstellen
ssh-keygen -t ed25519 -C "deine@email.com"

# Public Key anzeigen
cat ~/.ssh/id_ed25519.pub

Diesen Key dann in GitHub/GitLab unter Settings → SSH Keys einfügen.

# Verbindung testen
ssh -T git@github.com

Nützliche Befehle

Befehl Funktion
git status Status anzeigen
git add . Alle Änderungen stagen
git commit -m "msg" Commit erstellen
git push Hochladen
git pull Herunterladen
git log --oneline Historie (kompakt)
git diff Änderungen anzeigen
git branch Branches anzeigen
git checkout -b name Neuer Branch
git merge branch Branch mergen
git stash Änderungen zwischenspeichern
git stash pop Zwischenspeicher zurückholen

Zusammenfassung

Der typische Workflow:

# 1. Änderungen machen
nano app.py

# 2. Status prüfen
git status

# 3. Änderungen stagen
git add .

# 4. Commit erstellen
git commit -m "Feature: Neue Funktion hinzugefügt"

# 5. Hochladen
git push

Nächste Schritte

  • GitHub/GitLab Account erstellen
  • Pull Requests verstehen
  • Merge Konflikte lösen
  • Git Flow Workflow lernen