Einrichtung
Bei der ersten Verwendung lies setup.md. Standard: Best-Practices-Modus (keine Konfiguration erforderlich).
Verwendung
Der Benutzer benötigt Git-Kompetenz – von grundlegenden Operationen bis zu komplexen Workflows. Der Agent übernimmt Branching, Merging, Rebasing, Konfliktlösung und Team-Kollaborationsmuster.
Architektur
Speicher in ~/git/. Siehe memory-template.md für die Struktur.
~/git/
└── memory.md # Benutzereinstellungen (optional)
Kurzreferenz
| Thema | Datei |
|---|---|
| Grundlegende Befehle | commands.md |
| Fortgeschrittene Operationen | advanced.md |
| Branch-Strategien | branching.md |
| Konfliktlösung | conflicts.md |
| History und Wiederherstellung | history.md |
| Team-Workflows | collaboration.md |
| Einrichtung | setup.md |
| Gedächtnis | memory-template.md |
Kernregeln
- Nie
force pushauf geteilte Branches – Verwende--force-with-leasenur auf Feature-Branches - Committe früh, committe oft – Kleine Commits lassen sich leichter überprüfen, rückgängig machen und mit
bisectdurchsuchen - Schreibe aussagekräftige Commit-Nachrichten – Erste Zeile unter 72 Zeichen, Imperativ
- Pullen vor dem Pushen – Verwende immer
git pull --rebasevor dem Pushen, um Merge-Commits zu vermeiden - Aufräumen vor dem Mergen – Nutze
git rebase -izum Squashen von Fixup-Commits
Team-Workflows
Feature-Branch-Flow:
git checkout -b feature/nameausgehend von main- Commits machen, regelmäßig pushen
- PR öffnen, Review erhalten
- Squashen und nach main mergen
- Feature-Branch löschen
Hotfix-Flow:
git checkout -b hotfix/issueausgehend von main- Fix, Test, Commit
- Nach main UND develop mergen (falls vorhanden)
- Release taggen
Täglicher Sync:
git fetch --all --prune
git rebase origin/main # oder merge, falls das Team es bevorzugt
Commit-Nachrichten
- Verwende das konventionelle Commit-Format:
type(scope): description - Erste Zeile unter 72 Zeichen halten
- Typen:
feat,fix,docs,style,refactor,test,chore
Push-Sicherheit
- Verwende
git push --force-with-leaseanstelle von--force– verhindert Überschreiben der Arbeit anderer - Wird der Push abgelehnt, führe zuerst
git pull --rebaseaus, bevor du es erneut versuchst - Niemals
force pushauf main/master-Branch
Konfliktlösung
- Nach dem Bearbeiten von Konfliktdateien prüfen, ob keine Markierungen mehr vorhanden sind:
grep -r "<<<\|>>>\|===" . - Testen, ob der Build funktioniert, bevor der Merge abgeschlossen wird
- Wird der Merge zu komplex, breche mit
git merge --abortab und versuche stattdessengit rebase
Branch-Hygiene
- Gemergte Branches lokal löschen:
git branch -d branch-name - Remote-Tracking bereinigen:
git fetch --prune - Vor dem Erstellen eines PRs den Feature-Branch auf den neuesten main rebasen
- Mit
git rebase -iunordentliche Commits vor dem Pushen squashen
Sicherheits-Checkliste
Vor zerstörerischen Operationen (reset --hard, rebase, force push):
- Ist dies ein geteilter Branch? → History nicht umschreiben
- Habe ich uncommittete Änderungen? → Zuerst stashen oder committen
- Bin ich auf dem richtigen Branch? →
git branchzur Überprüfung - Ist das Remote auf dem neuesten Stand? → Zuerst
git fetch
Häufige Fallstricke
- git user.email falsch – Überprüfen mit
git config user.emailvor wichtigen Commits - Leere Verzeichnisse – Git verfolgt sie nicht,
.gitkeephinzufügen - Submodule – Immer mit
--recurse-submodulesklonen - Detached HEAD – Mit
git switch -zum vorherigen Branch zurückkehren - Push abgelehnt – Normalerweise ist zuerst
git pull --rebasenötig - stash pop bei Konflikt – Stash verschwindet. Stattdessen
stash applyverwenden - Große Dateien – Git LFS für Dateien >50 MB verwenden, niemals Secrets committen
- Groß-/Kleinschreibung – Mac/Windows ignorieren sie, Linux nicht – verursacht CI-Fehler
Wiederherstellungsbefehle
- Letzten Commit rückgängig machen, Änderungen behalten:
git reset --soft HEAD~1 - Unstagede Änderungen verwerfen:
git restore dateiname - Verlorene Commits finden:
git reflog(behält ~90 Tage History) - Gelöschten Branch wiederherstellen:
git checkout -b branch-name <sha-aus-reflog> - Mit
git add -pteilweise stagen, wenn ein Commit mehrere Änderungen mischt
Debuggen mit Bisect
Finde den Commit, der einen Fehler eingeführt hat:
git bisect start
git bisect bad # aktueller Commit ist fehlerhaft
git bisect good v1.0.0 # diese Version funktionierte
# Git checkt den mittleren Commit aus, teste ihn, dann:
git bisect good # oder git bisect bad
# Wiederholen, bis Git den Übeltäter findet
git bisect reset # zum ursprünglichen Branch zurückkehren
Kurzzusammenfassung
git status -sb # kurzer Status mit Branch
git log --oneline -5 # letzten 5 Commits
git shortlog -sn # Mitwirkende nach Commit-Anzahl
git diff --stat HEAD~5 # Änderungszusammenfassung der letzten 5 Commits
git branch -vv # Branches mit Tracking-Info
git stash list # ausstehende Stashes
Verwandte Skills
Installiere mit clawhub install <slug>, wenn der Benutzer zustimmt:
gitlab– GitLab CI/CD und Merge Requestsdocker– Containerisierungs-Workflowscode– Codequalität und Best Practices
Feedback
- Nützlich?
clawhub star git - Auf dem Laufenden bleiben:
clawhub sync