Da Anonimo (non verificato) , 29 Aprile 2026

Cosa otterrai

Prenderai un branch di feature rimasto indietro rispetto a main, ne farai rebase puliti sulla nuova punta, risolverai eventuali conflitti e pusherai il branch riobasato.

Perche rebase, non merge?

Mergare main nel branch di feature produce commit di merge extra e ingarbuglia la storia.

Passo 1: configurare 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"

Passo 2: rebase

git checkout feature/login
git rebase main

Passo 3: gestire conflitti

git status
git add app.txt
git rebase --continue
git rebase --abort

Passo 4: verificare

git log --oneline --graph

Passo 5: push

git push
git push --force-with-lease

Varianti comuni

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 interattivo

git rebase -i main

Insidie e regole

  • Mai fare rebase di branch condivisi.
  • Usare --force-with-lease.
  • Risolvere i conflitti nell'ordine.
  • Se i conflitti sono soverchianti, abortire.

Recupero

git reflog
git reset --hard ORIG_HEAD