Git School · FluxGit

Branch Git divergente: merge o rebase

FluxGit ·

I blocchi sono casi diversi, non un unico script. Scegli il caso del tuo repository. Sostituisci branch, percorsi e VERIFIED_COMMIT prima dell’uso. I comandi di annullamento valgono solo per la propria operazione attiva; non eseguire entrambe le alternative.

Risposta breve

Un branch diverge quando punta locale e upstream hanno commit assenti dall’altro lato. Fai fetch, controlla entrambe le storie e scegli l’integrazione. Merge le conserva; rebase riapplica commit locali sull’upstream cambiandone gli ID. L’avviso descrive il grafo, non dimostra perdita di file.

Esempio e condizioni

L’esempio usa main che segue origin/main, con due commit locali e uno remoto. Verifica nomi reali e upstream. Fetch aggiorna il riferimento remoto senza integrare da solo la storia nel branch attuale. Un remote rinominato o un branch senza upstream necessita di nomi adattati.

Controlla prima di modificare

Leggi status e branch -vv prima di fetch origin. Il conteggio destra/sinistra di HEAD...origin/main mostra commit esclusivi dei due lati. Controlla grafo e patch: due contro uno non dice se cambiano la stessa funzione. Un riferimento remoto vecchio o il solo conteggio non bastano.

git status --short
git branch -vv
git fetch origin
git rev-list --left-right --count HEAD...origin/main
git log --oneline --graph --decorate HEAD origin/main

Conserva un riferimento o checkout separato

Crea rescue/before-sync alla punta locale e salva le modifiche senza commit separatamente. Un branch conserva storia confermata; uno stash verificato copre diversamente file tracciati, nuovi e ignorati. Controlla la copia. Integrare sopra lavoro locale estraneo rende conflitti e recupero più difficili da capire.

git branch rescue/before-sync HEAD

Primo percorso

Scegli merge per mantenere la storia, soprattutto con commit locali già condivisi. Merge origin/main combina upstream scaricato e branch attuale, normalmente registrando entrambi i genitori nella divergenza. Controlla diff e verifiche del progetto prima di pubblicare. Un merge completato non garantisce codice combinato corretto.

git merge origin/main

Scegli consapevolmente l’altro risultato

Scegli rebase per commit locali che il team permette di riscrivere. Rebase origin/main riapplica il lavoro sulla punta scaricata, normalmente con nuovi ID. Altri possono dipendere dagli originali. Un grafo lineare non autorizza riscrivere branch condivisi o aggirare le loro protezioni.

git rebase origin/main

Limiti ed eccezioni

Per conflitti di merge, leggi status, risolvi e prepara i file e termina; merge --abort abbandona l’integrazione quando le condizioni lo consentono. Nel rebase risolvi il conflitto attuale e usa rebase --continue: può fermarsi più volte. Rebase --abort annulla il rebase attivo; non mescolare i flussi.

git status
git merge --abort
git rebase --abort

Conflitti e pulizia

Reset --hard origin/main non è una soluzione generica: toglie dal branch la sua storia locale separata e può sovrascrivere file tracciati. È la scelta di scartare lavoro, mentre qui uniamo storie volute. Per abbandonare commit, esaminali e conserva le copie necessarie in un altro procedimento.

Verifica il risultato

Controlla grafo, stato e differenza da origin/main, poi le verifiche pertinenti. Un push normale può essere respinto se il remoto è avanzato dopo fetch. Scarica e rivedi il nuovo stato, senza passare automaticamente a force push. Conserva il recupero fino alla verifica degli effetti dell’integrazione.

git status --short
git log -8 --oneline --graph --decorate
git diff origin/main HEAD

Domande frequenti

Perché pull chiede una strategia? Comprende fetch e una scelta d’integrazione potenzialmente ambigua. Merge evita conflitti? No, entrambi possono averli. Rebase è sempre migliore? No: condivisione dei commit e politica del team contano più di una preferenza universale.

Esamina l’operazione in FluxGit

Usa la storia visiva e la vista delle modifiche di FluxGit per esaminare l’operazione e i commit pertinenti. Mantieni le verifiche di branch, condivisione e file locali dell’esempio. La pagina di download mostra build e piattaforme disponibili.

Riferimenti ufficiali Git

Percorsi correlati

Scarica FluxGit