170 lines
3.8 KiB
Markdown
170 lines
3.8 KiB
Markdown
# Git Projektanweisung
|
|
|
|
1. **Projektordner vorbereiten & Git initialisieren:**
|
|
Erstelle das Verzeichnis, wechsle hinein, initialisiere das Repository direkt mit dem Standard-Branch `main` und stelle sicher, dass kein alter `master`-Branch existiert.
|
|
|
|
```bash
|
|
mkdir project-git
|
|
cd project-git
|
|
git init -b main
|
|
|
|
# Prüfung/Bereinigung falls 'master' noch existieren sollte:
|
|
git branch -d master 2>/dev/null || true
|
|
|
|
```
|
|
|
|
|
|
2. **README.md erstellen & committen:**
|
|
Erstelle die Datei mit der geforderten Überschrift und führe den initialen Commit auf `main` durch.
|
|
|
|
```bash
|
|
echo "# Implementierung eines Workflows" > README.md
|
|
git add README.md
|
|
git commit -m "docs: add initial README.md"
|
|
|
|
```
|
|
|
|
|
|
3. **Feature-Branches anlegen:**
|
|
Erstelle die beiden Branches `feature-1` und `feature-2` ausgehend vom aktuellen Stand auf `main`.
|
|
|
|
```bash
|
|
git branch feature-1
|
|
git branch feature-2
|
|
|
|
```
|
|
|
|
|
|
4. **Arbeiten auf feature-1 (2 Commits):**
|
|
Wechsle zu `feature-1`, erstelle `feature1.txt` und führe zwei getrennte Commits durch.
|
|
|
|
```bash
|
|
git checkout feature-1
|
|
|
|
# Commit 1
|
|
echo "Feature 1: Basis-Funktionalitaet" > feature1.txt
|
|
git add feature1.txt
|
|
git commit -m "feat: add feature1.txt with base logic"
|
|
|
|
# Commit 2
|
|
echo "Feature 1: Erweiterung" >> feature1.txt
|
|
git add feature1.txt
|
|
git commit -m "feat: extend feature1.txt functionality"
|
|
|
|
```
|
|
|
|
|
|
5. **Arbeiten auf feature-2 (2 Commits):**
|
|
Wechsle zu `feature-2`, erstelle `feature2.txt` und führe ebenfalls zwei Commits durch.
|
|
|
|
```bash
|
|
git checkout feature-2
|
|
|
|
# Commit 1
|
|
echo "Feature 2: Erste Implementierung" > feature2.txt
|
|
git add feature2.txt
|
|
git commit -m "feat: add feature2.txt with base logic"
|
|
|
|
# Commit 2
|
|
echo "Feature 2: Erweiterte Logik" >> feature2.txt
|
|
git add feature2.txt
|
|
git commit -m "feat: extend feature2.txt functionality"
|
|
```
|
|
|
|
|
|
6. **feature-1 mergen & Tag v1.1.0 setzen:**
|
|
Wechsle zurück auf `main`, führe den Merge für `feature-1` durch und tagge den ersten stabilen Zustand.
|
|
|
|
```bash
|
|
git checkout main
|
|
git merge feature-1 --no-edit
|
|
git tag v1.1.0
|
|
|
|
```
|
|
|
|
|
|
7. **feature-2 mergen & Tag v1.2.0 setzen:**
|
|
Merge `feature-2` in den `main`-Branch und setze den nächsten Versions-Tag.
|
|
|
|
```bash
|
|
git merge feature-2 --no-edit
|
|
git tag v1.2.0
|
|
|
|
```
|
|
|
|
|
|
8. **Gestagte und ungestagte Änderungen in feature-1 vornehmen:**
|
|
Wechsle zurück zu `feature-1`. Erzeuge eine gestagte sowie eine ungestagte Änderung und speichere den Status-Dump.
|
|
|
|
```bash
|
|
git checkout feature-1
|
|
|
|
# Gestagte Aenderung:
|
|
echo "Aenderung 1 (gestaged)" >> feature1.txt
|
|
git add feature1.txt
|
|
|
|
# Ungestagte Aenderung:
|
|
echo "Aenderung 2 (ungestaged)" >> feature1.txt
|
|
git add feature1.txt
|
|
# Status in Datei schreiben:
|
|
git status > status.dump
|
|
|
|
```
|
|
|
|
|
|
9. **Änderungen stashen:**
|
|
Sichere alle Änderungen inklusive ungetrackter Dateien (`status.dump`) im Stash mit der geforderten Beschreibung.
|
|
|
|
```bash
|
|
git stash push -u -m "Stash 1: Hotfix needed"
|
|
|
|
```
|
|
|
|
|
|
10. **Hotfix-Branch erstellen, fixen & mergen:**
|
|
Zweige vom Tag `v1.2.0` ab, erstelle `stash.dump`, committe diesen Fix und merge alles in `main`.
|
|
|
|
```bash
|
|
# Hotfix-Branch von v1.2.0 erstellen:
|
|
git checkout -b hotfix v1.2.0
|
|
|
|
# Stash-Liste exportieren und committen:
|
|
git stash list > stash.dump
|
|
git add stash.dump
|
|
git commit -m "fix: resolve critical issue via stash inspection"
|
|
|
|
# In main mergen:
|
|
git checkout main
|
|
git merge hotfix --no-edit
|
|
|
|
```
|
|
|
|
|
|
11. **feature-1 fortsetzen, abschließen & v1.2.1 taggen:**
|
|
Kehre zu `feature-1` zurück, hole die Änderungen aus dem Stash, committe sie, merge den Branch in `main` und setze das finale Tag.
|
|
|
|
```bash
|
|
git checkout feature-1
|
|
git stash pop
|
|
|
|
# Alle wiederhergestellten Aenderungen committen:
|
|
git add .
|
|
git commit -m "feat: complete pending work on feature1"
|
|
|
|
# In main mergen und taggen:
|
|
git checkout main
|
|
git merge feature-1 --no-edit
|
|
git tag v1.2.1
|
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
Zur finalen Überprüfung der Tags und des Graphen:
|
|
|
|
```bash
|
|
git tag
|
|
git log --oneline --graph --all
|
|
|
|
``` |