94 lines
3.1 KiB
Markdown
94 lines
3.1 KiB
Markdown
# Branches
|
||
|
||
## Was sind Branches?
|
||
Branches (Zweige) ermöglichen es, parallel zur Hauptentwicklungslinie (z.B. `main`) zu arbeiten, ohne diese direkt zu beeinflussen. Sie sind ideal, um neue Features zu entwickeln, Fehler zu beheben oder alternative Ideen auszuprobieren.
|
||
|
||
Es ist möglich jederzeit zwischen verschiedenen Branches wechseln und später Änderungen zusammenführen. Oft folgt die Branch-Struktur einem bewährten Modell:
|
||
- Es gibt einen `main`-Branch, der den stabilen, produktionsreifen Stand des Projekts enthält.
|
||
- Daneben existiert ein `dev`- oder `develop`-Branch, auf dem aktiv entwickelt wird.
|
||
- Alle neuen Feature-Branches werden zunächst in diesen Entwicklungs-Branch gemerged.
|
||
- Sobald der dev-Branch einen stabilen und fehlerfreien Zustand erreicht hat, wird er in den `main`-Branch übernommen.
|
||
|
||
## Wofür verwendet man Branches?
|
||
- **Feature-Entwicklung**: Für neue Funktionen ohne Risiko für den Hauptcode
|
||
- **Bugfixes**: Fehlerbehebungen getrennt vom Hauptbranch
|
||
- **Experimente**: Neue Ideen ausprobieren, ohne das Hauptprojekt zu gefährden
|
||
- **Main-Branch**: Einen Funktionsfähigen und getetesten branch
|
||
|
||
## Branch erstellen
|
||
Ein neuer Branch wird mit folgendem Befehl erstellt:
|
||
```bash
|
||
git branch neuer-branchname
|
||
```
|
||
|
||
## In einen Branch wechseln
|
||
Um in einen Branch zu wechseln:
|
||
```bash
|
||
git switch neuer-branchname
|
||
```
|
||
|
||
## Branch erstellen **und** direkt wechseln:
|
||
```bash
|
||
git switch -c neuer-branchname
|
||
```
|
||
|
||
## Änderungen zusammenführen (Merge)
|
||
Wenn ein Branch fertig ist, kann er in einen anderen Branch (z. B. `main`) gemerged werden (man muss ich auf dem branch befinden in den der andere branch gemerged werden soll):
|
||
```bash
|
||
git switch main
|
||
git merge neuer-branchname
|
||
```
|
||
|
||
## Branch löschen (optional)
|
||
Nach dem Merge kann der Branch gelöscht werden:
|
||
```bash
|
||
git branch -d neuer-branchname
|
||
```
|
||
|
||
---
|
||
|
||
## Git Merge-Konflikte verstehen und lösen
|
||
|
||
Merge-Konflikte entstehen, wenn zwei Branches dieselben Zeilen in einer Datei unterschiedlich verändert haben. Git kann diese Konflikte nicht automatisch auflösen – das musst du manuell machen.
|
||
|
||
### 1. Konflikt erkennen
|
||
Nach einem Merge-Versuch zeigt Git dir betroffene Dateien:
|
||
```bash
|
||
git status
|
||
```
|
||
|
||
### 2. Konflikt in der Datei ansehen
|
||
Git markiert den Konflikt in der Datei mit diesen Symbolen:
|
||
```text
|
||
<<<<<<< HEAD
|
||
Deine Änderung aus dem aktuellen Branch
|
||
=======
|
||
Änderung aus dem gemergten Branch
|
||
>>>>>>> feature-branch
|
||
```
|
||
|
||
### 3. Konflikt lösen
|
||
Bearbeite die Datei so, dass du dich für eine Version entscheidest oder beide kombinierst. Entferne danach alle Konfliktmarkierungen.
|
||
|
||
### 4. Gelöste Datei zurückmelden
|
||
```bash
|
||
git add <dateiname>
|
||
```
|
||
|
||
### 5. Merge abschließen
|
||
```bash
|
||
git commit
|
||
```
|
||
Git öffnet einen Editor mit der Merge-Nachricht. Du kannst sie anpassen oder einfach speichern.
|
||
|
||
### 6. Merge conflict abbrechen
|
||
```bash
|
||
git merge --abort
|
||
```
|
||
Rückgängig machen und zum vorherigen Zustand zurückkehren (nur während eines unvollständigen Merges)
|
||
|
||
### 7. Merge conflict Fortsetzen
|
||
```bash
|
||
git merge --continue
|
||
```
|
||
Fortsetzen des Merges (normalerweise nur nach einem Rebase oder Squash, der den Merge unterbricht) |