Git Pull vs Git Rebase


123

Sono un noob in Git, e cercando di imparare la differenza tra git pullvs git rebase. Qualcuno può fornire un esempio di quando utilizzare quale opzione poiché ritengo che entrambe abbiano lo stesso scopo.


Si l'ho fatto. La differenza tra pull e rebase è che pull fa un'unione. Quindi la risposta alla tua domanda si trova nel link che ho incollato.
Thibault D.

1
@ user4943236 1) non sai nemmeno chi ha votato negativamente la tua domanda, non andare in giro ad accusare le persone senza motivo 2) se fosse il mio voto negativo non lo rimuoverei semplicemente perché è così facile trovare una risposta leggendo documentazione
Tim


Questo risponde alla tua domanda? git pull VS git fetch Vs git rebase
Shiwangini

Risposte:


130

git pulle git rebasenon sono intercambiabili, ma sono strettamente collegati.

git pullrecupera le ultime modifiche del ramo corrente da un telecomando e applica tali modifiche alla copia locale del ramo. Generalmente questo viene fatto mediante l'unione, ovvero le modifiche locali vengono unite nelle modifiche remote. Quindi git pullè simile a git fetch & git merge.

Il rebasing è un'alternativa alla fusione. Invece di creare un nuovo commit che combini i due rami, sposta i commit di uno dei rami uno sopra l'altro.

Puoi eseguire il pull usando rebase invece di merge ( git pull --rebase). Le modifiche locali apportate verranno riassegnate in cima alle modifiche remote, invece di essere unite alle modifiche remote.

Atlassian ha una documentazione eccellente sulla fusione e sul ribasamento .


51

git-pull - Recupera da e integra con un altro repository o un ramo locale GIT PULL

Fondamentalmente stai tirando il ramo remoto al tuo locale, esempio:

git pull origin master

Tirerà il ramo principale nel tuo repository locale

git-rebase - commit locali di Forward-port per la testa upstream aggiornata GIT REBASE

Questo sta mettendo le tue modifiche locali in cima alle modifiche eseguite in remoto da altri utenti. Per esempio:

  • Hai commesso alcune modifiche sul tuo ramo locale, ad esempio chiamato SOME-FEATURE
  • Il tuo amico nel frattempo stava lavorando ad altre funzionalità e ha fuso il suo ramo in master

Ora vuoi vedere le sue e le tue modifiche nella filiale locale. Quindi fai il checkout masterbranch:

git checkout master

quindi puoi tirare:

git pull origin master

e poi vai nella tua filiale:

git checkout SOME-FEATURE

e puoi fare rebase masterper ottenere le ultime modifiche da esso e mettere in cima i commit del tuo ramo:

git rebase master

Spero che ora sia un po 'più chiaro per te.


15
Non è necessario effettuare il checkout master. Rimani sul tuo ramo e fai: git fetchallora git rebase origin/master.
Antoine Martin

Controllando il master locale e quindi estraendo il master di origine si aggiornerà anche il master locale. Questa è una delle migliori pratiche da utilizzare
Ashwani

20

In poche parole:

-> Git Merge: Unirà semplicemente le tue modifiche e quelle remote e questo creerà un altro record della cronologia dei commit

-> Git Rebase: metterà le tue modifiche sopra tutte le nuove modifiche remote e riscriverà la cronologia dei commit, quindi la tua cronologia dei commit sarà molto più pulita di git merge. Il rebase è un'operazione distruttiva. Ciò significa che, se non lo applichi correttamente, potresti perdere il lavoro impegnato e / o interrompere la consistenza dei repository di altri sviluppatori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.