Par Anonyme (non vérifié) , 29 avril 2026

Ce que vous accomplirez

Vous prendrez une branche feature avec des commits work-in-progress désordonnés et la réécrirez en une série propre de commits atomiques prête pour la review.

Configurer un sandbox

mkdir cleanup-tutorial && cd cleanup-tutorial
git init
echo "main" > app.txt && git add . && git commit -m "Initial"
git checkout -b feature
echo "1" > one.txt && git add . && git commit -m "wip"
echo "2" > two.txt && git add . && git commit -m "more wip"
echo "3" > three.txt && git add . && git commit -m "fix"
echo "fixed" >> one.txt && git commit -am "actually fix one"
echo "lint" >> three.txt && git commit -am "lint"

Étape 1 : réviser

git log --oneline

Étape 2 : rebase interactif

git rebase -i main

Étape 3 : réécrire le script

pick aaa1111 wip
fixup ddd4444 actually fix one
pick bbb2222 more wip
pick ccc3333 fix
fixup eee5555 lint

Étape 4 : reword chaque commit

git rebase -i main
reword AAA111 wip
reword BBB222 more wip
reword CCC333 fix
Add file one with initial content

The first piece of the feature, providing the base data structure.

Étape 5 : vérifier

git log --oneline
git log

Étape 6 : push

git push --force-with-lease

Le workflow fixup pendant le développement

git commit --fixup <target-sha>
git rebase -i --autosquash main

Diviser un commit trop grand

git rebase -i main
git reset HEAD^
git add -p
git commit -m "Première pièce atomique"
git add -p
git commit -m "Seconde pièce atomique"
git rebase --continue

Pièges

  • Ne jamais rebase une branche sur laquelle d'autres ont basé du travail.
  • Toujours --force-with-lease, jamais --force sur des branches partagées.
  • Tester après rebase.

Récupération

git reflog
git reset --hard ORIG_HEAD