# 💻 CLI Cheatsheet: Git, Linux & Neovim Eine zentrale Referenz für Befehle, Shortcuts und Workflows. --- ## 🐙 Git (Version Control) # **Merkregel:** Git speichert Snapshots, nicht nur Deltas. Working Dir (Lokal) -> Staging Area (Vorbereitung) -> Repository(Commit). ### 🔄 Basis-Workflow | Befehl | Beschreibung | | :--- | :--- | | `git status` | Zeigt den aktuellen Zustand (geänderte/neue Dateien). | | `git add .` | Fügt **alle** Änderungen zur Staging-Area hinzu. | | `git add -p` | Interaktives Staging (Hunks einzeln auswählen). | | `git commit -m "msg"` | Erstellt einen Snapshot (Commit) mit Nachricht. | | `git push` | Synchronisiert lokale Commits zum Remote-Server. | | `git pull` | Holt Änderungen vom Server und merged sie. | ### ↩️ Undo & Rettungsanker | Befehl | Beschreibung | | :--- | :--- | | `git checkout .` | **Gefährlich:** Verwirft alle lokalen Änderungen an Dateien. | | `git reset --soft HEAD~1` | Macht den letzten Commit rückgängig, behält Änderungen aber im Staging. | | `git commit --amend` | Fügt Änderungen zum *letzten* Commit hinzu (History Rewrite!). | | `git stash` | Verschiebt Änderungen temporär auf einen Stack (Arbeitsverzeichnis sauber). | | `git stash pop` | Holt Änderungen vom Stack zurück. | | `git log --oneline --graph` | Zeigt den Commit-Baum visuell an. | git reset --hard HEAD~1 Löscht den letzten Commit und alle darin enthaltenen Änderungen unwiderruflich. Reset auf den Zustand davor. --- ## 🐧 Linux / Bash (Shell) ### 📂 Datei- & Ordner-Operationen | Befehl | Beschreibung | | :--- | :--- | | `ls -lah` | Listet alles (all), ausführlich (long), menschenlesbar (human). | | `cp -r src dest` | Kopiert Ordner rekursiv (`-r`). | | `rsync -av src/ dest/` | Synchronisiert Ordner (besser als cp, behält Rechte/Zeitstempel). | | `mkdir -p a/b/c` | Erstellt ganze Ordner-Pfade (parents). | | `du -sh folder` | Zeigt die Speicherbelegung eines Ordners (`disk usage`). | | `chmod +x file.sh` | Macht eine Datei ausführbar (e**x**ecutable). | ### 🔍 Suchen & Filtern (Grep & Find) | Befehl | Beschreibung | | :--- | :--- | | `grep -r "Text" .` | Sucht "Text" rekursiv im aktuellen Verzeichnis. | | `grep -Fw "IP" file` | Sucht nach fixem String (`-F`) und ganzem Wort (`-w`). | | `find . -name "*.conf"` | Sucht Dateien anhand des Namens. | | `find . -size +100M` | Findet Dateien größer als 100 MB. | | `history | grep "befehl"` | Durchsucht die eigene Befehls-Historie. | ### ⚙️ System & Prozesse | Befehl | Beschreibung | | :--- | :--- | | `htop` / `btop` | Interaktiver Prozess-Manager (CPU/RAM). | | `ps aux | grep [app]` | Zeigt spezifische laufende Prozesse. | | `kill -9 [PID]` | Beendet Prozess hart (SIGKILL). | | `systemctl status [dienst]` | Prüft Status eines Service (z.B. docker, sshd). | | `journalctl -xe` | Zeigt System-Logs (bei Fehlern). | --- ## ⛵ Neovim (NVIM)
Modi: ESC = Normal (Bewegen), i = Insert (Schreiben), v = Visual (Markieren).
### 🏃 Navigation (Muscle Memory) | Taste | Bewegung | | :--- | :--- | | `h` `j` `k` `l` | Links, Runter, Hoch, Rechts. | | `w` / `b` | Wort vorwärts / Wort rückwärts. | | `0` / `$` | Zeilenanfang / Zeilenende. | | `gg` / `G` | Dateianfang / Dateiende. | | `Ctrl + u` / `d` | Seite hoch / Seite runter (Up/Down). | | `/suchbegriff` | Suche (n = weiter, N = zurück). | ### ✏️ Editieren (Normal Mode) | Taste | Aktion | | :--- | :--- | | `u` / `Ctrl + r` | Undo / Redo. | | `dd` | Zeile ausschneiden (löschen). | | `yy` | Zeile kopieren (yank). | | `p` | Einfügen (paste) nach Cursor. | | `ciw` | "Change Inner Word" (Löscht Wort unter Cursor & wechselt zu Insert). | | `A` | Springt ans Zeilenende & wechselt zu Insert (Append). | | `o` | Neue Zeile unterhalb einfügen & Insert. | ### 💾 Ex-Kommandos (`:`) | Befehl | Aktion | | :--- | :--- | | `:w` | Speichern. | | `:q!` | Schließen ohne Speichern (Force). | | `:wq` | Speichern & Schließen. | | `:%s/old/new/g` | Suchen & Ersetzen in ganzer Datei. | | `:vsp file` | Vertikaler Split (Fensterteilung). | --- ## 🔐 SSH & Netzwerk | Befehl | Beschreibung | | :--- | :--- | | `ssh user@ip` | Verbindet zum Server. | | `ssh -p 2222 user@ip` | Verbindet auf spezifischem Port. | | `ssh-copy-id user@ip` | Kopiert den Public Key auf den Server (Passwortloses Login). | | `ip a` | Zeigt eigene IP-Adressen und Interfaces. | | `ss -tulpn` | Zeigt offene Ports und lauschende Dienste (Sockets). |