Ce que vous accomplirez
Vous prendrez une branche feature qui est en retard sur main, lui ferez rebase proprement sur le nouveau tip, résoudrez les conflits, et pousserez la branche rebasée.
Pourquoi rebase, pas merge ?
Merger main dans votre branche feature produit des merge commits supplémentaires.
Étape 1 : configurer un sandbox
mkdir rebase-tutorial && cd rebase-tutorial
git init
echo "v1" > app.txt
git add app.txt && git commit -m "Initial"
git checkout -b feature/login
echo "login" > login.txt
git add login.txt && git commit -m "Add login"
git checkout main
echo "v2" > app.txt
git commit -am "Update app to v2"
Étape 2 : rebase
git checkout feature/login
git rebase main
Étape 3 : gérer les conflits
git status
git add app.txt
git rebase --continue
git rebase --abort
Étape 4 : vérifier
git log --oneline --graph
Étape 5 : push
git push --force-with-lease
Variantes courantes
git fetch origin
git rebase origin/main
git config --global pull.rebase true
git checkout main && git pull
git checkout feature/login && git rebase main
Rebase interactif
git rebase -i main
Pièges et règles
- Ne rebase jamais des branches partagées.
- Utilisez
--force-with-lease, pas--force. - Résolvez les conflits dans l'ordre où ils surgissent.
- Si les conflits sont écrasants, abandonnez et reconsidérez.
Récupération
git reflog
git reset --hard ORIG_HEAD