<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Versionsverwaltung_im_Team_verwenden</id>
	<title>Anwendungsentwicklung und Softwarequalität – Versionsverwaltung im Team verwenden - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Versionsverwaltung_im_Team_verwenden"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Versionsverwaltung_im_Team_verwenden&amp;action=history"/>
	<updated>2026-10-10T12:53:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Versionsverwaltung_im_Team_verwenden&amp;diff=63494&amp;oldid=prev</id>
		<title>Glanz: aiMOOC über GPT aiMOOC Action erstellt</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Versionsverwaltung_im_Team_verwenden&amp;diff=63494&amp;oldid=prev"/>
		<updated>2026-10-09T19:33:49Z</updated>

		<summary type="html">&lt;p&gt;aiMOOC über GPT aiMOOC Action erstellt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{T}}&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Anwendungsentwicklung und Softwarequalität – Versionsverwaltung im Team verwenden =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zielgruppe:&amp;#039;&amp;#039;&amp;#039; Auszubildende Fachinformatik – Anwendungsentwicklung&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Niveau:&amp;#039;&amp;#039;&amp;#039; Ausbildung | Grundlagen bis Transfer&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernzeit:&amp;#039;&amp;#039;&amp;#039; 90–120 Minuten, einschließlich Übungen&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kurzbeschreibung:&amp;#039;&amp;#039;&amp;#039; Änderungen nachvollziehen, Branches im Team verwenden, Code-Reviews durchführen und Merge-Konflikte fachlich begründet lösen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernziele:&amp;#039;&amp;#039;&amp;#039; Du kannst einen lokalen Git-Workflow anwenden, Änderungen prüfen, automatisierte Tests ausführen, Review-Feedback geben und einen Merge-Konflikt sicher auflösen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernprinzip:&amp;#039;&amp;#039;&amp;#039; Anschauen → Ausprobieren → Überprüfen → Erklären → Übertragen&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sicherheitsrahmen:&amp;#039;&amp;#039;&amp;#039; Alle ausführbaren Beispiele verwenden ausschließlich fiktive Dateien in neu angelegten lokalen Testverzeichnissen. Es werden keine externen Repositories, Produktivsysteme, Kundendaten, Zugangsdaten oder Netzwerkverbindungen benötigt. Die eingebundenen Lernmedien sind externe Informationsangebote, keine Testumgebungen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Einleitung =&lt;br /&gt;
&lt;br /&gt;
[[Versionsverwaltung]] macht Änderungen an Software nachvollziehbar. Das verbreitete Versionsverwaltungssystem [[Git]] ermöglicht parallele Entwicklung, überprüfbare Änderungen und das Zusammenführen verschiedener Arbeitsstände.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git operations.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Abbildung: Git-Arbeitsbereiche und typische Befehle. Für die Übungen werden nur lokale Funktionen verwendet.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Drei Schritte zur Softwarequalität:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Ändern:&amp;#039;&amp;#039;&amp;#039; Entwickle eine Änderung in einem eigenen [[Branch]].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Prüfen:&amp;#039;&amp;#039;&amp;#039; Untersuche den [[Diff]], teste das Ergebnis und besprich es im [[Code-Review]].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Zusammenführen:&amp;#039;&amp;#039;&amp;#039; Integriere freigegebene Änderungen und löse mögliche Konflikte.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernvideo:&amp;#039;&amp;#039;&amp;#039; Grundlagen zu Staging-Bereich und Commits, 3:36 Minuten, englisch.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git Foundations - Commit.webm|500px|center]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Ausbildungsfall: Die Lernwerkstatt =&lt;br /&gt;
&lt;br /&gt;
Dein fiktives Ausbildungsteam entwickelt eine kleine Python-Anwendung zur Verwaltung von Workshop-Plätzen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ausgangssituation:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Teamrolle&lt;br /&gt;
! Änderungsvorschlag&lt;br /&gt;
! Begründung&lt;br /&gt;
|-&lt;br /&gt;
| Entwicklungsteam&lt;br /&gt;
| 12 Plätze&lt;br /&gt;
| Aktueller Ausgangsstand&lt;br /&gt;
|-&lt;br /&gt;
| Raumplanung&lt;br /&gt;
| 14 Plätze&lt;br /&gt;
| Größere Raumkapazität&lt;br /&gt;
|-&lt;br /&gt;
| Inklusionsplanung&lt;br /&gt;
| 13 Plätze&lt;br /&gt;
| Zusätzlicher Bewegungsraum&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fachliche Anforderungen:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Die Platzanzahl muss positiv sein und darf 14 nicht überschreiten.&lt;br /&gt;
# Änderungen müssen nachvollziehbar gespeichert werden.&lt;br /&gt;
# Vor einer Freigabe müssen Tests und Reviews durchgeführt werden.&lt;br /&gt;
# Bei widersprüchlichen Vorschlägen entscheidet das Team anhand fachlicher Kriterien.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dein Auftrag:&amp;#039;&amp;#039;&amp;#039; Simuliere diese Zusammenarbeit in zwei voneinander getrennten lokalen Git-Testlaboren. Die Personen und Anforderungen des Ausbildungsfalls sind erfunden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit 1: Git verstehen =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dauer:&amp;#039;&amp;#039;&amp;#039; 10 Minuten&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Arbeitsverzeichnis, Staging und Repository ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arbeitsbereich&lt;br /&gt;
! Bedeutung&lt;br /&gt;
! Git-Befehl&lt;br /&gt;
|-&lt;br /&gt;
| Working Directory&lt;br /&gt;
| Hier bearbeitest Du Dateien.&lt;br /&gt;
| git status&lt;br /&gt;
|-&lt;br /&gt;
| Staging Area&lt;br /&gt;
| Hier merkst Du Änderungen vor.&lt;br /&gt;
| git add&lt;br /&gt;
|-&lt;br /&gt;
| Lokales Repository&lt;br /&gt;
| Hier werden Commits gespeichert.&lt;br /&gt;
| git commit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Datei bearbeiten&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
Working Directory&lt;br /&gt;
       |&lt;br /&gt;
     git add&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
Staging Area&lt;br /&gt;
       |&lt;br /&gt;
    git commit&lt;br /&gt;
       |&lt;br /&gt;
       v&lt;br /&gt;
Lokaler Commit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Video:&amp;#039;&amp;#039;&amp;#039; Deutschsprachiges Git-Tutorial. Für diese Lerneinheit besonders relevant: 05:41–10:52.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|https://www.youtube.com/watch?v=v1ibwg3zaQQ|500|center}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Merksatz:&amp;#039;&amp;#039;&amp;#039; Ein Commit ist ein gespeicherter Projektstand. Ein Commit ist weder ein Backup des gesamten Computers noch automatisch eine Veröffentlichung im Internet.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Mini-Check ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Frage:&amp;#039;&amp;#039;&amp;#039; Warum reicht das Bearbeiten einer Datei noch nicht aus, um einen Commit zu erstellen?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Git unterscheidet Arbeitsverzeichnis, Staging und lokale Historie. Erst durch das Vormerken und Committen wird die Änderung Bestandteil der Git-Historie.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit 2: Lokales Git-Labor A einrichten =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dauer:&amp;#039;&amp;#039;&amp;#039; 15 Minuten&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Voraussetzungen:&amp;#039;&amp;#039;&amp;#039; Git ab Version 2.28, Python 3 und eine Bash-Umgebung unter Linux, macOS oder WSL. Die Beispiele verwenden keine externen Python-Pakete.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sicherheitsregel:&amp;#039;&amp;#039;&amp;#039; Verwende ein Terminal auf Deinem eigenen Rechner oder in einer ausdrücklich freigegebenen Übungsumgebung. Führe die Befehle nicht in einem vorhandenen Projekt aus.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Testumgebung A: Repository und Python-Tests ==&lt;br /&gt;
&lt;br /&gt;
Kopiere den folgenden vollständigen Block in eine Bash-Sitzung. Die Variable LAB_A bezeichnet das neu erzeugte temporäre Verzeichnis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LAB_A=&amp;quot;$(mktemp -d)&amp;quot;&lt;br /&gt;
cd &amp;quot;$LAB_A&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git init -b main&lt;br /&gt;
git config --local user.name &amp;quot;Azubi Lokal&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;azubi@example.invalid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
printf &amp;#039;Projekt: Lernwerkstatt\nPlaetze: 12\n&amp;#039; &amp;gt; kurs.txt&lt;br /&gt;
printf &amp;#039;__pycache__/\n*.pyc\n&amp;#039; &amp;gt; .gitignore&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; app.py &amp;lt;&amp;lt;&amp;#039;PY&amp;#039;&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
&lt;br /&gt;
def kapazitaet():&lt;br /&gt;
    for zeile in Path(&amp;quot;kurs.txt&amp;quot;).read_text(&lt;br /&gt;
        encoding=&amp;quot;utf-8&amp;quot;&lt;br /&gt;
    ).splitlines():&lt;br /&gt;
        if zeile.startswith(&amp;quot;Plaetze:&amp;quot;):&lt;br /&gt;
            return int(zeile.split(&amp;quot;:&amp;quot;, 1)[1])&lt;br /&gt;
    raise ValueError(&amp;quot;Plaetze fehlt&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def frei(gebucht):&lt;br /&gt;
    if gebucht &amp;lt; 0:&lt;br /&gt;
        raise ValueError(&amp;quot;Negative Buchungen&amp;quot;)&lt;br /&gt;
    return max(0, kapazitaet() - gebucht)&lt;br /&gt;
PY&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; test_app.py &amp;lt;&amp;lt;&amp;#039;PY&amp;#039;&lt;br /&gt;
import unittest&lt;br /&gt;
from app import kapazitaet, frei&lt;br /&gt;
&lt;br /&gt;
class LernwerkstattTests(unittest.TestCase):&lt;br /&gt;
    def test_limit(self):&lt;br /&gt;
        self.assertLessEqual(kapazitaet(), 14)&lt;br /&gt;
&lt;br /&gt;
    def test_frei(self):&lt;br /&gt;
        self.assertEqual(frei(2), kapazitaet() - 2)&lt;br /&gt;
&lt;br /&gt;
    def test_negativ(self):&lt;br /&gt;
        with self.assertRaises(ValueError):&lt;br /&gt;
            frei(-1)&lt;br /&gt;
PY&lt;br /&gt;
&lt;br /&gt;
git add .gitignore kurs.txt app.py test_app.py&lt;br /&gt;
git commit -m &amp;quot;Lernwerkstatt mit Tests starten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
python3 -m unittest -v&lt;br /&gt;
git status --short&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erwartung:&amp;#039;&amp;#039;&amp;#039; Drei erfolgreiche Tests mit der Abschlussmeldung OK. Nach dem Commit gibt `git status --short` bei einem unveränderten Repository keine Zeile aus.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum diese Tests?&amp;#039;&amp;#039;&amp;#039; Sie überprüfen die maximale Kapazität, die Berechnung freier Plätze und die Zurückweisung negativer Buchungszahlen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Gestufte Hilfen ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe A – Orientierung:&amp;#039;&amp;#039;&amp;#039; Prüfe mit &amp;lt;code&amp;gt;git --version&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;python3 --version&amp;lt;/code&amp;gt;, ob die Werkzeuge verfügbar sind.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe B – Fehlersuche:&amp;#039;&amp;#039;&amp;#039; Nutze &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt;, um den Zustand des Repositories zu erkennen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe C – Lösungshinweis:&amp;#039;&amp;#039;&amp;#039; Falls ein Commit wegen fehlender Identität nicht funktioniert, kontrolliere die beiden lokalen &amp;lt;code&amp;gt;git config --local&amp;lt;/code&amp;gt;-Einträge.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Basisaufgabe:&amp;#039;&amp;#039;&amp;#039; Erkläre den Unterschied zwischen einer bearbeiteten Datei und einem Commit.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Eine bearbeitete Datei gehört zunächst zum Arbeitsverzeichnis. Ein Commit dokumentiert einen ausdrücklich gespeicherten Stand. Die Unterscheidung ist für reproduzierbare Änderungen entscheidend.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit 3: Feature-Branches verwenden =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dauer:&amp;#039;&amp;#039;&amp;#039; 10 Minuten&lt;br /&gt;
&lt;br /&gt;
Ein [[Feature-Branch]] trennt eine geplante Änderung zunächst von der Hauptentwicklung.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git branches fork.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Abbildung: Ein Entwicklungszweig entsteht aus einem gemeinsamen Commit.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Praxis: Die Raumplanung ändern ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Führe diese Befehle im Repository LAB_A aus:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git switch -c feature/raumplanung&lt;br /&gt;
&lt;br /&gt;
printf &amp;#039;Projekt: Lernwerkstatt\nPlaetze: 14\n&amp;#039; &amp;gt; kurs.txt&lt;br /&gt;
&lt;br /&gt;
git diff -- kurs.txt&lt;br /&gt;
python3 -m unittest -v&lt;br /&gt;
&lt;br /&gt;
git add kurs.txt&lt;br /&gt;
git commit -m &amp;quot;Kurskapazitaet auf 14 setzen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git log --graph --oneline --decorate --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erwartung:&amp;#039;&amp;#039;&amp;#039; Der Diff zeigt die Änderung von 12 auf 14 Plätze. Die drei Tests bleiben erfolgreich.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; Ein erfolgreicher Test bestätigt nur die getesteten Regeln. Er beweist noch nicht, dass die erhöhte Raumkapazität fachlich genehmigt wurde.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Branch-Verlauf verstehen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Start-Commit A&lt;br /&gt;
      |&lt;br /&gt;
      +---- main&lt;br /&gt;
      |&lt;br /&gt;
      +---- feature/raumplanung&lt;br /&gt;
                     |&lt;br /&gt;
                     B: 12 -&amp;gt; 14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kontrollfrage:&amp;#039;&amp;#039;&amp;#039; Warum ist die Änderung auf &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; noch nicht enthalten?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Der neue Commit liegt zunächst auf dem Feature-Branch. Branches ermöglichen parallele Arbeiten, ohne jede Änderung sofort in die Hauptentwicklung aufzunehmen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit 4: Code-Reviews und Softwaretests =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dauer:&amp;#039;&amp;#039;&amp;#039; 15 Minuten&lt;br /&gt;
&lt;br /&gt;
Ein [[Code-Review]] prüft Änderungen hinsichtlich Korrektheit, Verständlichkeit, Wartbarkeit und Anforderungen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Basic git branching workflow (GitLab).svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Abbildung: Vereinfachter Team-Workflow mit Branches und Prüfung. Im Kurs wird der Review-Schritt ohne Server lokal nachgebildet.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Änderungen lokal reviewen ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bleibe in LAB_A und führe aus:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git diff main...feature/raumplanung -- kurs.txt&lt;br /&gt;
&lt;br /&gt;
python3 -m unittest -v&lt;br /&gt;
&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Review-Checkliste:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Anforderung:&amp;#039;&amp;#039;&amp;#039; Ist die neue Platzanzahl fachlich zulässig?&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Diff:&amp;#039;&amp;#039;&amp;#039; Wurden nur die vorgesehenen Dateien verändert?&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Tests:&amp;#039;&amp;#039;&amp;#039; Sind die lokalen Tests erfolgreich?&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Nachvollziehbarkeit:&amp;#039;&amp;#039;&amp;#039; Ist die Commit-Nachricht verständlich?&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Freigabe:&amp;#039;&amp;#039;&amp;#039; Sind offene Fragen geklärt?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kurzvideo:&amp;#039;&amp;#039;&amp;#039; Unterschiede zwischen Dateiversionen mit Git Diff erkennen, 3:10 Minuten, englisch.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git Foundations - Diff.webm|500px|center]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Review-Protokoll – lokale Übung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Prüfpunkt&lt;br /&gt;
! Ergebnis im Ausbildungsfall&lt;br /&gt;
|-&lt;br /&gt;
| Technischer Test&lt;br /&gt;
| Drei Tests erfolgreich&lt;br /&gt;
|-&lt;br /&gt;
| Änderung&lt;br /&gt;
| Platzanzahl von 12 auf 14&lt;br /&gt;
|-&lt;br /&gt;
| Fachliche Freigabe&lt;br /&gt;
| Noch zu klären&lt;br /&gt;
|-&lt;br /&gt;
| Review-Entscheidung&lt;br /&gt;
| Änderung zunächst nicht integrieren&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel für konstruktives Review-Feedback:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Die Änderung ist nachvollziehbar und erfüllt die bisher automatisiert geprüfte Obergrenze. Bitte kläre vor der Freigabe, ob die Inklusionsplanung einen zusätzlichen Platzbedarf für Bewegungsflächen vorsieht. Ein erfolgreicher Test ersetzt diese fachliche Abstimmung nicht.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; Ein lokaler Diff ist noch kein formaler Pull Request. Auf Hosting-Plattformen können Reviews zusätzlich Kommentare, Genehmigungen und Änderungsanforderungen dokumentieren. Im Kurs werden diese Schritte ohne Online-Dienst simuliert.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Gestufte Review-Hilfen ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe A:&amp;#039;&amp;#039;&amp;#039; Frage Dich, welche fachliche Regel ein Test absichert.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe B:&amp;#039;&amp;#039;&amp;#039; Vergleiche Ausgangszustand und Änderung mit &amp;lt;code&amp;gt;git diff main...feature/raumplanung&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe C:&amp;#039;&amp;#039;&amp;#039; Formuliere Dein Feedback nach dem Muster „Beobachtung – Risiko – konkrete Bitte“.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anwendungsaufgabe:&amp;#039;&amp;#039;&amp;#039; Schreibe einen eigenen Review-Kommentar zur Erhöhung der Kurskapazität.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Gutes Review-Feedback nennt eine konkrete Beobachtung und begründet eine notwendige Entscheidung. Ein bloßes „Sieht gut aus“ reicht nicht aus, wenn eine fachliche Anforderung ungeklärt ist.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit 5: Merge-Konflikte erkennen =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dauer:&amp;#039;&amp;#039;&amp;#039; 15 Minuten&lt;br /&gt;
&lt;br /&gt;
Ein [[Merge-Konflikt]] kann entstehen, wenn zwei Branches denselben Textbereich unterschiedlich verändern und Git keine eindeutige automatische Zusammenführung vornehmen kann.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git branches two forks and merge.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Abbildung: Zwei Entwicklungszweige und ihre Zusammenführung.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Testumgebung B: Konflikt gezielt auslösen ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Neues, unabhängiges Testlabor:&amp;#039;&amp;#039;&amp;#039; Der folgende Block funktioniert unabhängig von LAB_A. Er erzeugt ein zweites lokales Repository.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
LAB_B=&amp;quot;$(mktemp -d)&amp;quot;&lt;br /&gt;
cd &amp;quot;$LAB_B&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git init -b main&lt;br /&gt;
git config --local user.name &amp;quot;Azubi Lokal&amp;quot;&lt;br /&gt;
git config --local user.email &amp;quot;azubi@example.invalid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
printf &amp;#039;Projekt: Lernwerkstatt\nPlaetze: 12\n&amp;#039; &amp;gt; kurs.txt&lt;br /&gt;
printf &amp;#039;__pycache__/\n*.pyc\n&amp;#039; &amp;gt; .gitignore&lt;br /&gt;
&lt;br /&gt;
cat &amp;gt; test_kurs.py &amp;lt;&amp;lt;&amp;#039;PY&amp;#039;&lt;br /&gt;
from pathlib import Path&lt;br /&gt;
import unittest&lt;br /&gt;
&lt;br /&gt;
class PlatzTest(unittest.TestCase):&lt;br /&gt;
    def test_obergrenze(self):&lt;br /&gt;
        daten = Path(&amp;quot;kurs.txt&amp;quot;).read_text(&lt;br /&gt;
            encoding=&amp;quot;utf-8&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
        plaetze = int(&lt;br /&gt;
            daten.split(&amp;quot;Plaetze: &amp;quot;, 1)[1].splitlines()[0]&lt;br /&gt;
        )&lt;br /&gt;
        self.assertLessEqual(plaetze, 14)&lt;br /&gt;
        self.assertGreater(plaetze, 0)&lt;br /&gt;
PY&lt;br /&gt;
&lt;br /&gt;
git add kurs.txt .gitignore test_kurs.py&lt;br /&gt;
git commit -m &amp;quot;Kursplanung initialisieren&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git switch -c feature/raumplanung&lt;br /&gt;
printf &amp;#039;Projekt: Lernwerkstatt\nPlaetze: 14\n&amp;#039; &amp;gt; kurs.txt&lt;br /&gt;
git commit -am &amp;quot;Raumplanung erlaubt 14&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git switch main&lt;br /&gt;
git switch -c feature/inklusion&lt;br /&gt;
printf &amp;#039;Projekt: Lernwerkstatt\nPlaetze: 13\n&amp;#039; &amp;gt; kurs.txt&lt;br /&gt;
git commit -am &amp;quot;Inklusionsreserve setzt 13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git switch main&lt;br /&gt;
git merge --no-ff feature/raumplanung \&lt;br /&gt;
  -m &amp;quot;Raumplanung integrieren&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git merge --no-ff feature/inklusion \&lt;br /&gt;
  -m &amp;quot;Inklusionsreserve integrieren&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git status --short&lt;br /&gt;
cat kurs.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Achtung:&amp;#039;&amp;#039;&amp;#039; Der zweite Merge soll ausdrücklich mit einem Konflikt anhalten. Seine Fehlermeldung ist Teil der Übung und bedeutet nicht, dass das Testlabor beschädigt ist. Führe danach die Status- und Anzeige-Befehle aus.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erwartete Statusanzeige:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UU kurs.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Möglicher Konfliktbereich:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD&lt;br /&gt;
Plaetze: 14&lt;br /&gt;
=======&lt;br /&gt;
Plaetze: 13&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; feature/inklusion&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bedeutung:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Markierung&lt;br /&gt;
! Bedeutung im Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| HEAD&lt;br /&gt;
| Aktueller Stand mit 14 Plätzen&lt;br /&gt;
|-&lt;br /&gt;
| Trennlinie&lt;br /&gt;
| Trennt die beiden konkurrierenden Änderungen&lt;br /&gt;
|-&lt;br /&gt;
| feature/inklusion&lt;br /&gt;
| Eingehender Stand mit 13 Plätzen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum stoppt Git?&amp;#039;&amp;#039;&amp;#039; Beide Änderungen betreffen dieselbe Zeile. Git kennt die fachlichen Gründe für die unterschiedlichen Werte nicht.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernvideo:&amp;#039;&amp;#039;&amp;#039; Branches und Merge-Konflikte. Deutschsprachige Ergänzung zum lokalen Konfliktlabor.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|https://www.youtube.com/watch?v=_VPpFU3Jyq4|500|center}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Gestufte Konflikthilfen ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe A – Diagnose:&amp;#039;&amp;#039;&amp;#039; Schaue zuerst mit &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; nach, welche Datei nicht zusammengeführt ist.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe B – Vergleich:&amp;#039;&amp;#039;&amp;#039; Lies beide Werte zwischen den Konfliktmarkierungen und identifiziere ihre jeweilige Herkunft.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Hilfe C – Fachliche Entscheidung:&amp;#039;&amp;#039;&amp;#039; Vergleiche beide Vorschläge mit der maximalen Kapazität und dem zusätzlichen Raumbedarf.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anwendungsaufgabe:&amp;#039;&amp;#039;&amp;#039; Erkläre, warum Git den Konflikt nicht eigenständig entscheiden sollte.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Git kann Textänderungen vergleichen, aber nicht beurteilen, welcher Vorschlag die räumlichen und organisatorischen Anforderungen besser erfüllt. Die Entscheidung liegt beim Team.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit 6: Konflikte lösen und Qualität sichern =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dauer:&amp;#039;&amp;#039;&amp;#039; 10 Minuten&lt;br /&gt;
&lt;br /&gt;
Im Ausbildungsfall entscheidet das Team nach der Abstimmung, 13 Plätze vorzusehen. Damit bleibt zusätzliche Bewegungsfläche verfügbar.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git branches merge.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Abbildung: Nach dem Auflösen eines Konflikts kann die Zusammenführung abgeschlossen werden.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Konflikt auflösen ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Führe die nächsten Befehle in LAB_B aus, während der Merge-Konflikt noch offen ist:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
printf &amp;#039;Projekt: Lernwerkstatt\nPlaetze: 13\n&amp;#039; &amp;gt; kurs.txt&lt;br /&gt;
&lt;br /&gt;
git add kurs.txt&lt;br /&gt;
&lt;br /&gt;
git diff --cached --check&lt;br /&gt;
&lt;br /&gt;
python3 -m unittest -v&lt;br /&gt;
&lt;br /&gt;
git commit -m &amp;quot;Konflikt nach Review auf 13 Plaetze loesen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
git status --short&lt;br /&gt;
git log --graph --oneline --all --decorate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erwartung:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# Die Konfliktmarkierungen sind entfernt.&lt;br /&gt;
# Der automatisierte Test besteht.&lt;br /&gt;
# Der Merge ist abgeschlossen.&lt;br /&gt;
# Das Arbeitsverzeichnis ist sauber.&lt;br /&gt;
# Der Commit-Verlauf zeigt die zusammengeführten Entwicklungslinien.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Abbruchmöglichkeit:&amp;#039;&amp;#039;&amp;#039; Solange der Konflikt noch nicht abgeschlossen ist, kann &amp;lt;code&amp;gt;git merge --abort&amp;lt;/code&amp;gt; den Mergeversuch abbrechen. Benutze diesen Befehl nur im Übungsrepository und beachte, dass ungesicherte Änderungen einen sicheren Abbruch erschweren können.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Visualisierte Ergebnisse ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Merkmal&lt;br /&gt;
! Ausgangszustand&lt;br /&gt;
! Raumplanung&lt;br /&gt;
! Teamentscheidung&lt;br /&gt;
|-&lt;br /&gt;
| Plätze&lt;br /&gt;
| 12&lt;br /&gt;
| 14&lt;br /&gt;
| 13&lt;br /&gt;
|-&lt;br /&gt;
| Obergrenze&lt;br /&gt;
| Erfüllt&lt;br /&gt;
| Erfüllt&lt;br /&gt;
| Erfüllt&lt;br /&gt;
|-&lt;br /&gt;
| Zusätzliche Bewegungsreserve&lt;br /&gt;
| Ausgangsplanung&lt;br /&gt;
| Noch ungeklärt&lt;br /&gt;
| Berücksichtigt&lt;br /&gt;
|-&lt;br /&gt;
| Entscheidung&lt;br /&gt;
| Startzustand&lt;br /&gt;
| Review erforderlich&lt;br /&gt;
| Lokal integriert&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; Diese Tabelle zeigt die fiktiven Daten des Ausbildungsfalls. Die tatsächlichen Commit-Kennungen und der Commit-Graph werden von Git in Deiner eigenen Testumgebung erzeugt.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Reflexionsfrage ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum ist ein erfolgreich abgeschlossener Merge allein noch kein Qualitätsnachweis?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Begründetes Feedback:&amp;#039;&amp;#039;&amp;#039; Ein erfolgreicher Merge zeigt, dass Git die Änderungen technisch zusammenführen konnte. Ob die Software fachlich richtig, sicher und wartbar ist, muss zusätzlich durch Reviews, Tests und geeignete Freigabeprozesse bewertet werden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Vertiefung: Teamregeln für gute Softwarequalität =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Git operations.svg|400px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Teamregel&lt;br /&gt;
! Begründung&lt;br /&gt;
|-&lt;br /&gt;
| Kleine Commits&lt;br /&gt;
| Änderungen bleiben verständlich.&lt;br /&gt;
|-&lt;br /&gt;
| Aussagekräftige Commit-Nachrichten&lt;br /&gt;
| Entscheidungen werden besser nachvollziehbar.&lt;br /&gt;
|-&lt;br /&gt;
| Kurze Feature-Branches&lt;br /&gt;
| Abweichungen von der Hauptentwicklung bleiben überschaubar.&lt;br /&gt;
|-&lt;br /&gt;
| Reviews vor dem Merge&lt;br /&gt;
| Fehler und unklare Anforderungen können früh erkannt werden.&lt;br /&gt;
|-&lt;br /&gt;
| Automatisierte Tests&lt;br /&gt;
| Bekannte Anforderungen werden wiederholbar geprüft.&lt;br /&gt;
|-&lt;br /&gt;
| Konflikte gemeinsam klären&lt;br /&gt;
| Die Zusammenführung berücksichtigt technische und fachliche Aspekte.&lt;br /&gt;
|-&lt;br /&gt;
| Keine Secrets im Repository&lt;br /&gt;
| Zugangsdaten sollen nicht in der Versionshistorie landen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zusammenhang:&amp;#039;&amp;#039;&amp;#039; [[Continuous Integration]], [[Softwaretest]], [[Code-Review]] und [[Versionsverwaltung]] ergänzen sich. Keines dieser Verfahren ersetzt allein alle anderen Qualitätssicherungsmaßnahmen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quiz: Teste Dein Wissen ==&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welcher Git-Befehl zeigt den Zustand des Arbeitsverzeichnisses?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(git status)&lt;br /&gt;
(!git commit)&lt;br /&gt;
(!git merge)&lt;br /&gt;
(!git branch)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wozu dient die Staging Area?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Änderungen für den nächsten Commit vormerken)&lt;br /&gt;
(!Änderungen automatisch auf einen Server übertragen)&lt;br /&gt;
(!Alle Merge-Konflikte beseitigen)&lt;br /&gt;
(!Automatisch ein Review genehmigen)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was ist ein Commit?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Ein gespeicherter Projektstand in der lokalen Git-Historie)&lt;br /&gt;
(!Eine automatische Veröffentlichung im Internet)&lt;br /&gt;
(!Ein vollständiges Backup des Rechners)&lt;br /&gt;
(!Ein dauerhaft laufender Testserver)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum verwendet ein Team Feature-Branches?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Um Änderungen zunächst getrennt zu entwickeln)&lt;br /&gt;
(!Um automatisierte Tests überflüssig zu machen)&lt;br /&gt;
(!Um die Versionshistorie zu löschen)&lt;br /&gt;
(!Um alle Konflikte grundsätzlich zu verhindern)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welcher Befehl erstellt einen neuen Branch und wechselt auf ihn?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(git switch -c feature/planung)&lt;br /&gt;
(!git status feature/planung)&lt;br /&gt;
(!git add feature/planung)&lt;br /&gt;
(!git log feature/planung)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welcher Befehl eignet sich für die lokale Prüfung von Änderungen gegenüber main?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(git diff main...feature/raumplanung)&lt;br /&gt;
(!git init main)&lt;br /&gt;
(!git config main)&lt;br /&gt;
(!git commit main)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was gehört zu einem guten Code-Review?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Änderungen anhand von Anforderungen und Tests begründet prüfen)&lt;br /&gt;
(!Änderungen grundsätzlich ohne Prüfung übernehmen)&lt;br /&gt;
(!Nur die Anzahl der geänderten Zeilen zählen)&lt;br /&gt;
(!Automatisierte Tests immer ignorieren)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wann kann ein Merge-Konflikt entstehen?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Wenn dieselben Textbereiche unterschiedlich verändert wurden)&lt;br /&gt;
(!Bei jedem erfolgreichen Commit)&lt;br /&gt;
(!Immer beim Anzeigen eines Git-Logs)&lt;br /&gt;
(!Bei jeder Verwendung von git status)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was musst Du nach der manuellen Konfliktlösung tun?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Die bereinigte Datei vormerken und den Merge abschließen)&lt;br /&gt;
(!Das gesamte Repository löschen)&lt;br /&gt;
(!Alle vorhandenen Tests entfernen)&lt;br /&gt;
(!Die Konfliktmarkierungen unverändert committen)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum sind erfolgreiche Tests und Reviews gemeinsam wichtig?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Weil sie unterschiedliche Qualitätsrisiken abdecken)&lt;br /&gt;
(!Weil beide immer denselben Fehler finden)&lt;br /&gt;
(!Weil dadurch jede fachliche Abstimmung entfällt)&lt;br /&gt;
(!Weil ein erfolgreicher Test jede Änderung automatisch freigibt)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Memory ==&lt;br /&gt;
&lt;br /&gt;
Ordne den Git-Begriffen die passende Erklärung zu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Working Directory || Bereich für bearbeitete Dateien&lt;br /&gt;
|-&lt;br /&gt;
| Staging Area || Vormerkbereich für einen Commit&lt;br /&gt;
|-&lt;br /&gt;
| Commit || Gespeicherter Projektstand&lt;br /&gt;
|-&lt;br /&gt;
| Feature-Branch || Getrennter Entwicklungszweig&lt;br /&gt;
|-&lt;br /&gt;
| Diff || Darstellung von Änderungen&lt;br /&gt;
|-&lt;br /&gt;
| Code-Review || Fachliche Prüfung einer Änderung&lt;br /&gt;
|-&lt;br /&gt;
| Merge-Konflikt || Nicht automatisch zusammenführbare Änderung&lt;br /&gt;
|-&lt;br /&gt;
| Repository || Speicherort der Git-Projekthistorie&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drag and Drop ==&lt;br /&gt;
&lt;br /&gt;
Ordne die Befehle ihrer Funktion zu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ordne die richtigen Begriffe zu.&lt;br /&gt;
! Funktion&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;git status&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Arbeitszustand prüfen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;git add&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Änderung vormerken&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;git commit&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Projektstand speichern&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;git diff&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Änderungen vergleichen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;git switch&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Entwicklungszweig wechseln&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;git merge&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Entwicklungszweige zusammenführen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kreuzworträtsel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Branch || Wie heißt ein eigenständiger Entwicklungszweig in Git?&lt;br /&gt;
|-&lt;br /&gt;
| Commit || Wie nennt Git einen gespeicherten Projektstand?&lt;br /&gt;
|-&lt;br /&gt;
| Review || Wie heißt die fachliche Prüfung vorgeschlagener Änderungen?&lt;br /&gt;
|-&lt;br /&gt;
| Merge || Wie lautet der englische Begriff für das Zusammenführen von Entwicklungszweigen?&lt;br /&gt;
|-&lt;br /&gt;
| Konflikt || Was entsteht, wenn Änderungen nicht automatisch zusammengeführt werden können?&lt;br /&gt;
|-&lt;br /&gt;
| Repository || Wie nennt man einen Speicherort der Git-Projekthistorie?&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== LearningApps ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=Anwendungsentwicklung+und+Softwarequalität+Versionsverwaltung+im+Team+verwenden &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Ergänzende Suchergebnisse für Lernübungen. Die Verfügbarkeit und Inhalte einzelner LearningApps sind unabhängig von diesem Kurs.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lückentext ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Vervollständige den Text.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
Git ist ein { verteiltes } Versionsverwaltungssystem.&lt;br /&gt;
Mit git { status } prüfst Du den Arbeitszustand.&lt;br /&gt;
Der Befehl git { add } merkt Änderungen für einen Commit vor.&lt;br /&gt;
Mit git { commit } speicherst Du den vorgemerkten Stand.&lt;br /&gt;
Ein { Branch } ermöglicht parallele Entwicklung.&lt;br /&gt;
Mit git { switch } wechselst Du den Entwicklungszweig.&lt;br /&gt;
Ein git { diff } zeigt Unterschiede zwischen Dateiständen.&lt;br /&gt;
Bei einem { Review } werden Änderungen fachlich geprüft.&lt;br /&gt;
Ein Merge-{ Konflikt } erfordert eine Entscheidung über widersprüchliche Änderungen.&lt;br /&gt;
Nach einer Konfliktlösung müssen die Markierungen { entfernt } sein.&lt;br /&gt;
Automatisierte { Tests } können bekannte Fehlerfälle erkennen.&lt;br /&gt;
Für eine gute Teamentscheidung ist die fachliche { Begründung } entscheidend.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Basis-, Anwendungs- und Transferaufgaben mit Feedback =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Niveau&lt;br /&gt;
! Kontrollaufgabe&lt;br /&gt;
! Begründetes Feedback&lt;br /&gt;
|-&lt;br /&gt;
| Basis&lt;br /&gt;
| Prüfe den Git-Status nach einem Commit.&lt;br /&gt;
| Ein sauberer Status zeigt, dass aktuell keine uncommitteten Änderungen vorliegen. Er beweist nicht automatisch die fachliche Korrektheit.&lt;br /&gt;
|-&lt;br /&gt;
| Anwendung&lt;br /&gt;
| Prüfe einen Feature-Branch mit Diff, Tests und Review.&lt;br /&gt;
| Erst die Verbindung technischer und fachlicher Prüfungen ergibt eine belastbare Grundlage für die Entscheidung.&lt;br /&gt;
|-&lt;br /&gt;
| Transfer&lt;br /&gt;
| Löse den Kapazitätskonflikt und dokumentiere die Teamentscheidung.&lt;br /&gt;
| Die Auswahl des Endwertes muss aus Anforderungen abgeleitet werden. Konfliktfreiheit allein ist kein Freigabekriterium.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Selbstkontrolle:&amp;#039;&amp;#039;&amp;#039; Eine gute Antwort erklärt nicht nur, was Du getan hast, sondern auch, warum Deine Entscheidung für die Softwarequalität sinnvoll ist.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Leicht – Basis ===&lt;br /&gt;
&lt;br /&gt;
# [[Git|Git-Protokoll]]: Erstelle eine kurze, kommentierte Übersicht über die Befehle status, add, commit und diff. Erkläre jeweils ihre Aufgabe.&lt;br /&gt;
# [[Versionsverwaltung|Arbeitsablauf zeichnen]]: Gestalte eine Grafik mit Working Directory, Staging Area und lokalem Repository.&lt;br /&gt;
# [[Branch|Branches erkunden]]: Erstelle einen zusätzlichen lokalen Übungsbranch und dokumentiere den Branchwechsel mit eigenen Screenshots.&lt;br /&gt;
# [[Softwaretest|Testergebnis verstehen]]: Führe die Python-Tests aus und erläutere, welche drei Anforderungen beziehungsweise Verhaltensweisen in LAB_A überprüft werden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Standard – Anwendung ===&lt;br /&gt;
&lt;br /&gt;
# [[Code-Review|Review schreiben]]: Formuliere ein Review zur Raumplanung mit einer positiven Beobachtung und einer begründeten Änderungsanforderung.&lt;br /&gt;
# [[Git#Branches|Änderungen vergleichen]]: Erstelle zwei unterschiedliche Commits in einem eigenen lokalen Feature-Branch und analysiere die Diffs.&lt;br /&gt;
# [[Merge|Merge-Konflikt dokumentieren]]: Wiederhole LAB_B und gestalte ein kurzes Bildschirmtutorial mit Diagnose, fachlicher Entscheidung und Konfliktlösung.&lt;br /&gt;
# [[Softwarequalität|Qualitätstest erweitern]]: Ergänze einen Python-Test für den Fall, dass mehr Plätze gebucht werden als verfügbar sind. Begründe, welches Verhalten Du für sinnvoll hältst.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Schwer – Transfer ===&lt;br /&gt;
&lt;br /&gt;
# [[Softwarearchitektur|Moduländerung organisieren]]: Simuliere zwei parallele Änderungen an einer fiktiven Python-Anwendung und entwickle eine konfliktarme Branch-Strategie.&lt;br /&gt;
# [[Code-Review|Review-Richtlinie entwickeln]]: Gestalte eine eigene Checkliste für kleine Entwicklungsteams. Begründe die Bedeutung jedes Qualitätskriteriums.&lt;br /&gt;
# [[Softwaretest|Fehlerorientiertes Testen]]: Verändere die lokale Anwendung absichtlich so, dass ein Test fehlschlägt. Dokumentiere Fehlerursache, Diagnose, Korrektur und Testergebnis.&lt;br /&gt;
# [[Projektmanagement|Teamkonflikt lösen]]: Entwickle für eine fiktive Anforderung mit widersprüchlichen Änderungsvorschlägen ein Entscheidungsverfahren, das Sicherheit, Nutzerbedürfnisse und technische Qualität berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
&lt;br /&gt;
Bearbeite die folgenden Aufgaben selbstständig. Im Vordergrund stehen Zusammenhänge, begründete Entscheidungen und die Übertragung auf neue Situationen.&lt;br /&gt;
&lt;br /&gt;
# [[Versionsverwaltung|Änderungsstrategie]]: Zwei Auszubildende entwickeln gleichzeitig neue Funktionen. Erkläre, welche Branch-Strategie Du wählen würdest und wie sie Risiken begrenzen kann.&lt;br /&gt;
# [[Code-Review|Freigabeentscheidung]]: Alle Tests bestehen, aber ein Reviewer entdeckt eine nicht geklärte Sicherheitsanforderung. Entscheide begründet über die Freigabe.&lt;br /&gt;
# [[Merge-Konflikt|Konfliktanalyse]]: Zwei Branches verändern dieselbe Konfiguration unterschiedlich. Entwickle eine Methode, um technische und fachliche Konflikte voneinander zu unterscheiden.&lt;br /&gt;
# [[Softwaretest|Testqualität]]: Beschreibe ein Beispiel, bei dem alle vorhandenen Tests bestehen, obwohl die Software eine wichtige Anforderung verletzt.&lt;br /&gt;
# [[Git|Fehlerdiagnose]]: Nach einem Merge meldet Git weiterhin unzusammengeführte Dateien. Erläutere einen geeigneten Diagnose- und Lösungsablauf.&lt;br /&gt;
# [[Softwarequalität|Transfer]]: Übertrage die Prinzipien des Ausbildungsfalls auf ein größeres Teamprojekt mit mehreren Komponenten. Entwickle eine begründete Reihenfolge für Änderung, Review, Tests und Integration.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Bewertungsraster =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kriterium&lt;br /&gt;
! Basis&lt;br /&gt;
! Gut&lt;br /&gt;
! Sehr gut&lt;br /&gt;
|-&lt;br /&gt;
| Git-Verständnis&lt;br /&gt;
| Befehle korrekt anwenden&lt;br /&gt;
| Zustände erklären&lt;br /&gt;
| Zusammenhänge selbstständig übertragen&lt;br /&gt;
|-&lt;br /&gt;
| Review&lt;br /&gt;
| Fehler oder Fragen erkennen&lt;br /&gt;
| Feedback begründen&lt;br /&gt;
| Technische und fachliche Risiken abwägen&lt;br /&gt;
|-&lt;br /&gt;
| Konfliktlösung&lt;br /&gt;
| Konflikt beseitigen&lt;br /&gt;
| Lösung testen&lt;br /&gt;
| Entscheidung nachvollziehbar dokumentieren&lt;br /&gt;
|-&lt;br /&gt;
| Softwarequalität&lt;br /&gt;
| Tests durchführen&lt;br /&gt;
| Grenzen von Tests erkennen&lt;br /&gt;
| Weitere Prüfungen gezielt begründen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernnachweis =&lt;br /&gt;
&lt;br /&gt;
Für Deinen Lernnachweis solltest Du folgende Ergebnisse vorweisen können:&lt;br /&gt;
&lt;br /&gt;
# Ein selbstständig eingerichtetes, isoliertes lokales Git-Repository mit fiktiven Testdaten.&lt;br /&gt;
# Einen nachvollziehbaren Commit-Verlauf mit sinnvoller Branch-Nutzung.&lt;br /&gt;
# Einen dokumentierten Diff mit verständlicher Beschreibung der Änderung.&lt;br /&gt;
# Mindestens einen begründeten Review-Kommentar mit fachlicher Bewertung.&lt;br /&gt;
# Erfolgreiche lokale Testläufe und eine Erklärung der geprüften Anforderungen.&lt;br /&gt;
# Ein Protokoll der Diagnose und Auflösung eines Merge-Konflikts.&lt;br /&gt;
# Eine reflektierte Entscheidung darüber, weshalb die gewählte Lösung die Softwarequalität verbessert.&lt;br /&gt;
# Eine Übertragung der erlernten Vorgehensweise auf eine weitere fiktive Entwicklungssituation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nachweisformen:&amp;#039;&amp;#039;&amp;#039; Eigenes Lernprotokoll, kommentierte Screenshots, lokales Übungsrepository, kurze Bildschirmaufnahme oder mündliche Präsentation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datenschutz:&amp;#039;&amp;#039;&amp;#039; Verwende ausschließlich Testdaten. Reiche keine Zugangsdaten, Kundendaten oder fremden Repository-Inhalte ein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= OERs zum Thema =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wikipedia: Versionsverwaltung&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Versionsverwaltung &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wikipedia: Git&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Git &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Fachlich geprüfte Informationsquellen ==&lt;br /&gt;
&lt;br /&gt;
# [https://git-scm.com/book/de/v2/Git-Branching-Einfaches-Branching-und-Merging Pro Git – Einfaches Branching und Merging]: Grundlagen zu Branches, Merges und Konflikten.&lt;br /&gt;
# [https://git-scm.com/docs/git-status Offizielle Git-Dokumentation – Status]: Arbeitsverzeichnis und unzusammengeführte Dateien.&lt;br /&gt;
# [https://git-scm.com/docs/git-diff Offizielle Git-Dokumentation – Diff]: Änderungen vergleichen.&lt;br /&gt;
# [https://git-scm.com/docs/git-switch Offizielle Git-Dokumentation – Switch]: Branches erstellen und wechseln.&lt;br /&gt;
# [https://git-scm.com/docs/git-merge Offizielle Git-Dokumentation – Merge]: Zusammenführen und Konflikte bearbeiten.&lt;br /&gt;
# [https://docs.github.com/de/pull-requests/how-tos/review-pull-requests GitHub-Dokumentation – Pull-Request-Reviews]: Kommentare und Freigaben im Team.&lt;br /&gt;
# [https://www.atlassian.com/de/git/tutorials/using-branches/merge-conflicts Atlassian – Merge-Konflikte]: Ergänzende technische Erklärung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Mediennachweise und Rechte ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geprüfte Wikimedia-Commons-Medien:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Git_operations.svg Git operations.svg]: Daniel Kinzler, CC BY 3.0.&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Git_branches_fork.svg Git branches fork.svg]: Bunyk, CC BY-SA 4.0.&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Git_branches_two_forks_and_merge.svg Git branches two forks and merge.svg]: Bunyk, CC BY-SA 4.0.&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Git_branches_merge.svg Git branches merge.svg]: Bunyk, CC BY-SA 4.0.&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Basic_git_branching_workflow_(GitLab).svg Basic git branching workflow]: TheresNoTime, CC BY-SA 4.0.&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Git_Foundations_-_Commit.webm Git Foundations – Commit]: GitHub, CC BY 3.0.&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Git_Foundations_-_Diff.webm Git Foundations – Diff]: GitHub, CC BY 3.0.&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Git_Foundations_-_Merge.webm Git Foundations – Merge]: GitHub, CC BY 3.0.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;YouTube:&amp;#039;&amp;#039;&amp;#039; Die eingebetteten Git-Tutorials sind verlinkte externe Lehrmedien. Aus der öffentlichen Verfügbarkeit oder Einbettbarkeit wird keine Creative-Commons-Lizenz abgeleitet. Für eigene Weiterveröffentlichungen sind die jeweiligen Nutzungsrechte gesondert zu prüfen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lizenzhinweis:&amp;#039;&amp;#039;&amp;#039; Die Lizenzangaben beziehen sich auf die jeweiligen Originaldateien bei Wikimedia Commons. Urheberangaben und Lizenzbedingungen, insbesondere Namensnennung und gegebenenfalls Weitergabe unter gleichen Bedingungen, sind bei einer Weiterverwendung einzuhalten.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Technischer Hinweis:&amp;#039;&amp;#039;&amp;#039; Die Medien und Links stellen Informationsquellen dar. Der praktische Git-Teil arbeitet ausschließlich mit lokal erzeugten Dateien und benötigt weder eine Cloud-Plattform noch Zugriff auf ein fremdes Netzwerk.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Verknüpfte Lernbereiche =&lt;br /&gt;
&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Anwendungsentwicklung und Softwarequalität]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Versionsverwaltung]]&lt;br /&gt;
# [[Git]]&lt;br /&gt;
# [[Repository]]&lt;br /&gt;
# [[Commit]]&lt;br /&gt;
# [[Branch]]&lt;br /&gt;
# [[Merge]]&lt;br /&gt;
# [[Merge-Konflikt]]&lt;br /&gt;
# [[Code-Review]]&lt;br /&gt;
# [[Softwaretest]]&lt;br /&gt;
# [[Softwarequalität]]&lt;br /&gt;
# [[Continuous Integration]]&lt;br /&gt;
# [[Softwareentwicklung]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Informatik]]&lt;br /&gt;
[[Kategorie:Anwendungsentwicklung]]&lt;br /&gt;
[[Kategorie:Softwarequalität]]&lt;br /&gt;
[[Kategorie:Versionsverwaltung]]&lt;br /&gt;
[[Kategorie:Git]]&lt;br /&gt;
[[Kategorie:Softwareentwicklung]]&lt;br /&gt;
[[Kategorie:Ausbildung]]&lt;br /&gt;
[[Kategorie:Fachinformatiker]]&lt;br /&gt;
[[Kategorie:Interaktive Lernkurse]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= aiMOOC-Projekte =&lt;br /&gt;
[[Kategorie:AI_MOOC]] [[Kategorie:GPT aiMOOC]]&lt;br /&gt;
{{MT}}&lt;/div&gt;</summary>
		<author><name>Glanz</name></author>
	</entry>
</feed>