La guida definitiva per Git Merge e Git Rebase

Benvenuti nella nostra guida definitiva ai comandigit merge egit rebase. Questo tutorial ti insegnerà tutto ciò che devi sapere sulla combinazione di più rami con Git.

Git Merge

Il comandogit merge unirà tutte le modifiche apportate alla base di codice su un ramo separato al ramo corrente come nuovo commit.,

La sintassi del comando è la seguente:

git merge BRANCH-NAME

Per esempio, se si sta lavorando in un ramo denominato dev e vorrei unire tutte le nuove modifiche che sono state fatte in un ramo denominato new-features, è necessario eseguire il seguente comando:

git merge new-features

Nota: Se ci sono modifiche non salvate il vostro attuale ramo Git non permette di unire fino a quando tutte le modifiche nel codice attuale, sono stati commessi., Gestire le modifiche, è possibile:

Creare un nuovo ramo e il commit delle modifiche

git checkout -b new-branch-namegit add .git commit -m "<your commit message>"

Stash di loro

git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree

Abbandonare tutte le modifiche

git reset --hard # removes all pending changes

Git Rebase

La riassegnazione di un ramo Git è un modo per spostare l’interezza di un ramo ad un altro punto dell’albero. L’esempio più semplice è spostare un ramo più in alto nell’albero., Diciamo che abbiamo un ramo che divergeva dal ramo master al punto A:

 /o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master

Quando si rebase è possibile spostarlo in questo modo:

 /o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master

Per rebase, assicurati di avere tutti i commit che vuoi nella rebase nel tuo ramo master. Controlla il ramo che vuoi rebase e digita git rebase master (dove master è il ramo su cui vuoi rebase)., che, per esempio, un ramo che si è basata su un altro ramo (chiamiamola così) è ricalcolata sulla master:

 /---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master

Dopo git rebase master branch o git rebase master quando è stato estratto il ramo, si ottiene:

 /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch

Git rebase interattiva nella console

usare git rebase in console con un elenco di commit si può scegliere, modificare o far cadere in rebase:

  • Invio git rebase -i HEAD~5 con l’ultimo numero può essere un qualsiasi numero di commit, dalla più recente a ritroso che si desidera rivedere.,
  • In vim, premereesc, quindii per iniziare a modificare il test.
  • Sul lato sinistro è possibile sovrascrivere pick con uno dei comandi seguenti. Se vuoi schiacciare un commit in uno precedente e scartare il messaggio di commit, inserisci f al posto del pick del commit.
  • Salva e esci dall’editor di testo.
  • Quando la rebase viene interrotta, effettuare le regolazioni necessarie, quindi utilizzare git rebase --continue fino a quando la rebase non ha esito positivo.,
  • Se si esegue il rebasing con successo, è necessario forzare il push delle modifiche con git push -f per aggiungere la versione rebased al repository remoto.
  • Se c’è un conflitto di unione, ci sono un certo numero di modi per risolvere questo problema, tra cui seguendo i suggerimenti in questa guida. Un modo è quello di aprire i file in un editor di testo ed eliminare le parti del codice che non si desidera. Quindi utilizzare git add <file name> seguito da git rebase --continue., Puoi saltare il commit in conflitto inserendo git rebase --skip, interrompere la rebasing eseguendo git rebase --abort nella tua console.

Conflitti di unione

Un conflitto di unione è quando si effettuano commit su rami separati che alterano la stessa linea in modi contrastanti.,che versione del file per mantenere un messaggio di errore simile al seguente:

CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.

Se si guarda il resumé.txt file nell’editor di codice, è possibile vedere dove il conflitto ha avuto luogo:

<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address

Git aggiunto alcune righe al file:

  • <<<<<<< HEAD
  • =======
  • >>>>>>> updated_address

Git Merge vs Git Rebase

Sia git merge e git rebase comandi sono molto utili, e uno non è meglio dell’altro., Tuttavia, ci sono alcune differenze molto importanti tra i due comandi che tu e il tuo team dovreste prendere in considerazione.

Ogni volta che viene eseguitogit merge, viene creato un commit di unione extra. Ogni volta che si lavora nel repository locale, avere troppi commit di unione può rendere la cronologia di commit confusa. Un modo per evitare il commit di unione è usare invecegit rebase.

git rebase è una funzionalità molto potente. Detto questo, è rischioso anche se non viene utilizzato nel modo giusto., git rebase altera la cronologia di commit, quindi usala con cura. Se il rebasing viene eseguito nel repository remoto, può creare molti problemi quando altri sviluppatori tentano di estrarre le ultime modifiche al codice dal repository remoto. Ricordarsi di eseguire solo git rebase in un repository locale.

Questo è tutto ciò che devi sapere per unire e rebase con il meglio di loro.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *