Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Esecuzione di un'Operazione di Rebase | Workflow Più Avanzati
Fondamenti di GitHub

Esecuzione di un'Operazione di Rebase

Scorri per mostrare il menu

Rebase delle modifiche sul branch main

Prima di poter effettuare il rebase delle nostre modifiche, è necessario passare al branch main e scaricare le ultime modifiche:

git checkout main
git pull
Selezione del branch main e scaricamento delle modifiche

Ora diamo un'occhiata all'albero dei commit:

git log --graph --oneline --all
Albero dei commit prima del rebase

Attualmente, sia il branch main che il branch feature/payment hanno dei commit successivi all'antenato comune più recente. Questo indica che non è possibile eseguire un fast-forward merge.

Se dovessimo unire questi branch, si verificherebbe un three-way merge. Tuttavia, desideriamo mantenere una cronologia lineare, quindi eseguiamo un rebase del branch feature/payment su quello main. Questo può essere fatto passando al branch feature/payment ed eseguendo il comando git rebase:

git checkout feature/payment
git rebase main
Rebase delle modifiche

Merge fast-forward

Poiché il rebase è stato completato con successo, diamo un'altra occhiata al nostro commit tree:

git log --graph --oneline
Albero dei commit dopo il rebase

Come previsto, la cronologia dei commit è ora lineare con l'ultimo commit presente sul branch feature/payment. Ora è possibile eseguire un semplice merge fast-forward sul branch main:

git checkout main
git merge feature/payment
Unione dei rami

Verifica che entrambi i rami puntino allo stesso commit osservando l'ultimo commit:

git log -n 1
Ultimo commit

Rimozione del branch feature

Il branch main ora contiene l'ultimo commit con il sistema di pagamento implementato, quindi è possibile rimuovere in sicurezza sia il branch locale che quello remoto feature/payment. Il seguente comando rimuove il branch remoto:

git push --delete origin feature/payment

Ora è possibile rimuovere il branch locale:

git branch -d feature/payment
Eliminazione dei branch

Infine, tutte le modifiche apportate possono essere inviate nuovamente al remote repository:

git push
Invio eliminazione

Per verificare che il branch feature sia stato eliminato sia localmente che in remoto, è possibile eseguire il seguente comando, che elenca tutti i branch locali e remoti (-a indica tutti):

git branch -a
Elenco di tutti i branch

Come puoi vedere, il branch feature/payment è stato eliminato con successo e ora ci sono solo due branch: main e john/test con i rispettivi corrispondenti remoti.

In generale, il rebase funziona bene per le modifiche locali che non sono ancora state condivise, ma può causare problemi significativi per le modifiche già pubblicate su un repository remoto e possibilmente scaricate da altri collaboratori. Eseguire il rebase di commit utilizzati da altri può creare confusione e conflitti a causa della riscrittura della cronologia dei commit.

Come regola generale, evitare di eseguire il rebase di modifiche che sono state pushate su repository remoti per prevenire questi problemi.

question mark

Dopo aver eseguito il rebase di feature/payment su main, perché git merge feature/payment esegue un fast-forward merge?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 5

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 5
some-alt