AP2_FIAE - Versionsverwaltung - Branching und Merging
Deck: AP2_FIAE Kategorie: Versionsverwaltung Subkategorie: Branching und Merging Anzahl Karten: 26
Was ist Branching?::Branching ist ein zentrales Konzept für das parallele Entwickeln verschiedener Features oder das isolierte Arbeiten an Bugfixes in Versionsverwaltungssystemen. Ein Branch repräsentiert dabei eine unabhängige Linie der Entwicklung.
Wie erstellt man einen neuen Branch?::Um einen neuen Branch zu erstellen, verwendet man den Befehl: git branch
Wie wechselt man zwischen Branches?::Um von einem Branch zu einem anderen zu wechseln, nutzt man den Befehl: git checkout
Wie kann man einen neuen Branch erstellen und gleichzeitig zu diesem wechseln?::Git bietet die verkürzte Methode: git checkout -b
Wie zeigt man alle aktuell vorhandenen Branches in einem Repository an?::Um eine Übersicht aller aktuell vorhandenen Branches zu erhalten, verwendet man: git branch. Der aktuelle Branch wird mit einem Sternchen (*) markiert.
Warum ist Branching wichtig?::Das Verständnis von Branching ist essentiell, um gleichzeitig an verschiedenen Funktionen arbeiten zu können, ohne den Hauptentwicklungszweig zu beeinflussen, sowie um Features oder Bugfixes isoliert zu entwickeln und zu testen, bevor sie in den Hauptbranch übernommen werden.
Was ist Merging?::Merging ist der Prozess, bei dem Änderungen aus einem Branch in einen anderen überführt werden. Dies ist notwendig, wenn an separaten Branches parallel gearbeitet wird und die Änderungen in einem zentralen Branch zusammengeführt werden sollen.
Wann wird ein Merge benötigt?::Ein Merge wird benötigt, wenn ein Feature, das in einem separaten Branch entwickelt wurde, fertiggestellt ist und in den Hauptbranch übernommen werden soll, oder um aktuelle Änderungen aus dem Hauptbranch in einen Feature-Branch zu integrieren.
Wie führt man ein Merge durch?::1. Aktuellen Stand des Zielbranches holen (git pull). 2. Zum Zielbranch wechseln (git checkout main). 3. Merge durchführen (git merge feature-branch).
Was sind Merge-Konflikte?::Merge-Konflikte entstehen, wenn in beiden Branches die gleichen Zeilen eines Dokuments geändert wurden und Git diese nicht automatisch auflösen kann. Sie müssen dann manuell bearbeitet werden.
Wie löst man Merge-Konflikte?::1. Konfliktbereiche identifizieren. 2. Konflikte manuell bearbeiten und Markierungen entfernen. 3. Änderungen commiten.
Was sind Merge-Strategien?::Git bietet verschiedene Merge-Strategien wie Recursive Merge (Standard für Merges mit mehreren gemeinsamen Vorgängern) und Fast-Forward Merge (wenn der zu mergende Branch direkt vom Zielbranch abstammt).
Was sind Best Practices für Merges?::Best Practices sind: Branches kurzlebig halten, regelmäßig vom Hauptbranch in Feature-Branches mergen und Merges im Team zu koordinieren.
Wie identifiziert man einen Mergekonflikt?::Mit dem Befehl git status können Dateien mit Konflikten als ‘unmerged’ identifiziert werden.
Wie untersucht man Mergekonflikte?::In betroffenen Dateien werden konfliktbehaftete Bereiche von Git mit <<<<<<< HEAD, =======, und >>>>>>> feature-branch markiert. HEAD zeigt auf die eigenen Änderungen, feature-branch auf die Änderungen aus dem anderen Branch.
Wie behebt man Mergekonflikte manuell?::Für jede Merge-Konfliktmarkierung muss entschieden werden, welchen Inhalt man behalten möchte - aus HEAD, aus feature-branch, eine Kombination oder etwas Neues. Danach werden die Markierungen entfernt.
Was ist der beste Ansatz bei Mergekonflikten?::Der beste Ansatz ist Kommunikation mit beteiligten Teammitgliedern, Bewertung der Notwendigkeit aller Änderungen und Durchführung von Tests nach dem Lösen des Konflikts.
Was ist der Feature Branch Workflow?::Beim Feature Branch Workflow wird für jedes neue Feature ein separater Branch erstellt, um die Entwicklung vom Hauptzweig zu isolieren. Vorteile sind isolierte Entwicklung und ein stabiler Hauptzweig.
Was ist der Gitflow Workflow?::Gitflow ist eine spezifischere Branching-Strategie mit zusätzlichen Branch-Typen wie develop, release und hotfix. Vorteil ist eine klare Struktur für verschiedene Phasen der Entwicklung.
Was ist der Forking Workflow?::Beim Forking Workflow forkt jeder Entwickler das zentrale Repository und arbeitet in seiner eigenen Kopie. Änderungen werden als Pull Requests eingereicht. Vorteil ist die unabhängige Arbeit der Entwickler.
Was ist die Funktion von Pull Requests?::Pull Requests erlauben Codeüberprüfungen, bevor Änderungen integriert werden. Vorteile sind verbesserte Codequalität und Feedback unter Entwicklern.
Was sind Best Practices für effektives Branching und Merging?::Best Practices sind: Kleine, fokussierte Commits, regelmäßige Synchronisation von Branches und gründliche Code Reviews.
Was ist Rebase?::Rebase ist ein Tool, das ermöglicht, die Basis eines Branches auf einen neuen Stand wie den des Hauptbranches zu setzen, um potenzielle Merge-Konflikte zu reduzieren.
Wann sollte man Rebase verwenden?::Rebase sollte nur auf Branches verwendet werden, die noch nicht mit dem zentralen Repository geteilt wurden, um die Historie sauber zu halten.
Was ist Cherry-Picking?::Cherry-Picking ermöglicht es, spezifische Commits aus einem Branch in einen anderen zu übernehmen, ohne die gesamte Historie zu übertragen.
Wann wendet man Cherry-Picking an?::Cherry-Picking wird angewendet, um einen Bugfix aus einem Branch in den Hauptbranch zu übernehmen oder spezifische Änderungen für ein Hotfix-Release anzuwenden.