# 💡Git-Cheat Sheet mit den wichtigsten Commit-Strategien als Übersicht

## 🧭 **Commit-Strategien in Git – Entscheidungsbaum**

```plaintext
                 ┌───────────────────────────────┐
                 │ Möchtest du Commit speichern? │
                 └──────────────┬────────────────┘
                                │
                  ┌─────────────▼──────────────┐
                  │ Lokaler Commit             │
                  └─────────────┬──────────────┘
                                │
                ┌───────────────▼───────────────────────────┐
                │ Ist es eine Korrektur des letzten Commit? │
                └─────┬─────────────────┬───────────────────┘
                      │                 │
        ┌─────────────▼───────┐   ┌─────▼──────────────┐
        │ `--amend` verwenden │   │  Normaler Commit   │
        └─────────────────────┘   └────────────────────┘
```

🔀 Möchtest du zwei Branches zusammenführen?

```plaintext
                ┌─────────────────┬───────────────┐
                │                 │               │
          ┌─────▼────────┐ ┌──────▼───────┐ ┌─────▼────────┐
          │ Fast-Forward │ │ Merge-Commit │ │   Rebase     │
          └──────────────┘ └──────────────┘ └──────────────┘
```

---

## 🧪 **Wann nutzt man welche Strategie?**

| Strategie      | Use Case                                          | Kommandos                                      |
|----------------|---------------------------------------------------|------------------------------------------------|
| Commit         | Lokale Änderungen speichern                       | `git commit -m "Message"`                      |
| Amend          | Letzten Commit ändern/ergänzen                    | `git commit --amend`                           |
| Merge Commit   | Branches zusammenführen mit Historie              | `git merge <branch>`                           |
| Fast-Forward   | Branch einfach „vorziehen“                        | `git merge --ff-only <branch>`                 |
| Rebase         | Änderungen auf andere Spitze übertragen           | `git rebase <branch>` oder `git pull --rebase` |
| Squash         | Mehrere Commits zusammenfassen                    | `git rebase -i HEAD~n` → `squash`              |
| Cherry-Pick    | Einzelnen Commit übernehmen                       | `git cherry-pick <hash>`                       |
| Revert         | Commit rückgängig machen mit neuem Commit         | `git revert <hash>`                            |
| Stash & Commit | Änderungen zwischenspeichern und später committen | `git stash` → `git stash pop` → `commit`       |
