Warum squashen
Ein Feature-Branch sammelt oft "WIP", "fix typo" und "address review" Commits, die die Absicht begraben. Squash kondensiert diese in eine kleine Anzahl logisch sinnvoller Commits vor dem Merge.
Squash beim Merge
git checkout main
git merge --squash feature
git commit -m "Add feature X"
Squash mit interaktivem Rebase
git rebase -i main
Andern Sie pick in squash oder fixup.
Autosquash-Workflow
git commit --fixup=<sha>
git commit --squash=<sha>
git rebase -i --autosquash main
Fur Klarheit umordnen
Wahrend des interaktiven Rebase Zeilen tauschen, um Commits umzuordnen.
Zu grosse Commits aufteilen
git reset HEAD^
git add -p src/parser.c
git commit -m "Refactor parser"
git add -p src/runtime.c
git commit -m "Refactor runtime"
git rebase --continue
Haufige Fehler
Squash uber einen Merge hinweg kondensiert zwei Branches in einen Mega-Commit.
Autoren erhalten
git commit -m "Add feature X
Co-authored-by: Alice <[email protected]>
Co-authored-by: Bob <[email protected]>"