⚠
Hinweis zur Privatsphäre: Wenn Sie sich mit Ihrem GitHub-Konto anmelden, werden Ihre Quiz-Versuche in Google Firebase gespeichert, damit Sie Ihren Fortschritt verfolgen können. Diese Daten sind nur für den Kursleiter einsehbar, werden nicht anderweitig weitergegeben und nach Semesterende gelöscht. Frühere Löschung auf Anfrage beim Kursleiter. Möchten Sie anonym bleiben? Nutzen Sie den Gastmodus oder ein GitHub-Konto ohne Ihren echten Namen.
Lädt...

02 Übung: Git Pointer und Branches

Punkte: 0 / 20

Anleitung

Dieses interaktive Quiz testet dein Verständnis von Git Branches als Pointer. Jede Frage zeigt einen Git-Graphen mit Commits, Branches, HEAD und/oder Tags. Studiere jeden Graphen sorgfältig, bevor du deine Antwort auswählst.

Abgedeckte Themen:

  • Branch-Erstellung und -Wechsel
  • Wie HEAD, Branches und Tags als Pointer funktionieren
  • Fast-Forward-Merges und divergierende Branches
  • Detached HEAD-Zustand
  • Remote-Tracking Branches und Aufräum-Workflows

Jede Frage hat genau eine richtige Antwort. Konzentriere dich darauf zu verstehen, was die Pointer dir über den Git-Zustand verraten.

Frage1 Branch-Erstellung und Wechsel

Du bist auf dem main Branch und führst git checkout -b feature/new-ui aus. Wie sieht der Git-Graph unmittelbar nach diesem Befehl aus?

Vorher:
"Add login"  "Fix bug"  "Add dashboard"
     ↓           ↓           ↓
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l
                              ↑
                           main ← HEAD
Frage2 Branch-Erstellung und Wechsel

Nachdem du feature/new-ui erstellt hast, machst du einen Commit. Wie sieht der Graph aus?

Vor dem Commit:
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l
                              ↑
                           main
                    feature/new-ui ← HEAD
Frage3 Branch-Erstellung und Wechsel

Du machst zwei weitere Commits auf feature/new-ui. Wie ist der Zustand jetzt?

Ausgangszustand:
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s
                              ↑            ↑
                           main     feature/new-ui ← HEAD

Nach 2 weiteren Commits:
Frage4 Branch-Erstellung und Wechsel

Du führst git checkout main aus. Was passiert mit den Pointern?

Vor dem Checkout:
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s  ←  t1u2v3w  ←  x4y5z6a
                              ↑                                       ↑
                           main                              feature/new-ui ← HEAD
Frage5 Merging und Tags

Während du auf main bist, führst du git merge feature/new-ui aus und Git führt einen „Fast-Forward”-Merge durch. Was ist das Ergebnis?

Vor dem Merge:
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s  ←  t1u2v3w  ←  x4y5z6a
                              ↑                                       ↑
                         main ← HEAD                          feature/new-ui
Frage6 Merging und Tags

Nach dem Merge erstellst du einen Tag: git tag -a v1.0 -m "Release 1.0". Wohin zeigt der Tag-Pointer?

Vor dem Tag:
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s  ←  t1u2v3w  ←  x4y5z6a
                                                                   ↑
                                                              main ← HEAD
                                                              feature/new-ui
Frage7 Divergierende Branches

Du wechselst zu main und machst einen Commit. Währenddessen bleibt feature/new-ui wo es ist. Wie ist der Zustand?

Ausgangszustand:
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s  ←  t1u2v3w  ←  x4y5z6a
                                                                   ↑
                                                              main ← HEAD
                                                              feature/new-ui
                                                                 (v1.0)

Danach: git checkout main, dann einen Commit machen
Frage8 Divergierende Branches

Ausgehend vom Ergebnis aus Frage 7 wechselst du jetzt zu feature/new-ui und machst einen neuen Commit. Wie sieht das Repository aus?

Ausgangszustand (von F7):
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s  ←  t1u2v3w  ←  x4y5z6a  ←  b7c8d9e
                                                                   ↑            ↑
                                                              (v1.0)        main ← HEAD
                                                           feature/new-ui

Ausgeführte Befehle:
  git checkout feature/new-ui
  echo "new feature code" >> app.js
  git add app.js
  git commit -m "Add new UI feature"

Was ist das Ergebnis?
Frage9 Detached HEAD und Spezialoperationen

Du führst git checkout x4y5z6a aus (den Commit mit Tag v1.0). In welchem Zustand befindet sich Git?

Vor dem Checkout:
                                                                    b7c8d9e
                                                                        ↑
                                                                    main ← HEAD
                                                                       /
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s  ←  t1u2v3w  ←  x4y5z6a  ←
                                                                   ↑      \
                                                              (v1.0)       f1g2h3i
                                                                              ↑
                                                                      feature/new-ui
Frage10 Detached HEAD und Spezialoperationen

Du benennst einen Branch um mit git branch -m old-name new-name. Was ändert sich tatsächlich?

Vor der Umbenennung:
                                                              ↱  b7c8d9e
                                                             /       ↑
  a1b2c3d  ←  e4f5g6h  ←  i7j8k9l  ←  p9q8r7s  ←  t1u2v3w  ←  x4y5z6a     main
                                                                   ↑  ↖
                                                              (v1.0)    f1g2h3i
                                                                           ↑
                                                                   feature/old-name ← HEAD
Frage11 Remote-Tracking Branches

Du führst git branch -a aus und siehst diese Ausgabe. Welche drei Arten von Referenzen werden angezeigt?

$ git branch -a
  main
  feature/new-feature
  remotes/origin/main
  remotes/origin/feature/old-pr
Frage12 Remote-Tracking Branches

Du führst git fetch origin aus. Was aktualisiert dieser Befehl?

Vor dem Fetch:
GitHub (origin):
  main → x4y5z6a (neuester Commit)

Dein lokales Git:
  main → i7j8k9l (veraltet)
  remotes/origin/main → i7j8k9l (veraltetes Lesezeichen)

Nach dem Fetch:
Frage13 Remote-Tracking Branches

Ein PR wurde gemergt und der Feature-Branch wurde auf GitHub gelöscht. Du führst lokal git branch -a aus. Was siehst du?

GitHub (origin):
  main (einziger Branch, der existiert)

Dein lokales Git hat noch nicht gefetcht:
Frage14 Remote-Tracking Branches

Was macht git fetch --prune anders als git fetch?

Situation:
- GitHub hat feature/old-pr gelöscht
- Dein lokales Git hat noch remotes/origin/feature/old-pr

Du führst aus: git fetch --prune
Frage15 Aufräum-Workflows

Du hast gerade einen PR auf GitHub gemergt und der Feature-Branch wurde automatisch gelöscht. Du führst git checkout main aus, dann git pull --prune. Was passiert?

Vorher:
GitHub: main → x4y5z6a (hat gemergten PR)
        feature/old-pr gelöscht

Lokal:  main → i7j8k9l (veraltet)
        feature/old-pr → p9q8r7s (existiert lokal noch)
        remotes/origin/main → i7j8k9l (veraltet)
        remotes/origin/feature/old-pr → p9q8r7s (veraltet!)

Nach git pull --prune:
Frage16 Remote-Tracking Branches

Was stellen Remote-Tracking Branches laut der „Lesezeichen-Analogie” aus der Vorlesung dar?

GitHub (die Websites) hat:
  - main Branch
  - feature/xyz Branch

Dein lokales Git hat:
  - Lokale Branches (main, feature/xyz)
  - Remote-Tracking Branches (remotes/origin/main, remotes/origin/feature/xyz)
Frage17 Aufräum-Workflows

Du möchtest, dass Git bei jedem Fetch automatisch veraltete Remote-Tracking Branches entfernt. Was solltest du konfigurieren?

Frage18 Aufräum-Workflows

Du möchtest sehen, welche lokalen Branches in main gemergt wurden, bevor du sie löschst. Welcher Befehl zeigt das an?

Frage19 Aufräum-Workflows

Dein PR wurde mit „Squash and merge” auf GitHub gemergt. Der Branch wurde dort gelöscht. Jetzt versuchst du, deinen lokalen Branch zu löschen:

$ git branch -d feature/squashed
error: The branch 'feature/squashed' is not fully merged.

Warum sagt Git das, und was solltest du tun?

Frage20 Aufräum-Workflows

Dein PR wurde mit „Create a merge commit” (nicht Squash) gemergt und GitHub hat den Remote-Branch automatisch gelöscht. Wie sieht der komplette Aufräum-Workflow aus?

Ausgangszustand:
- GitHub: main (aktualisiert mit deinem PR per Merge-Commit), feature/xyz gelöscht
- Lokal: main (veraltet), feature/xyz (existiert noch),
         remotes/origin/feature/xyz (veraltet)
© 2026 Dominik Mueller   •  Powered by Soopr   •  Theme  Moonwalk