Sono un noob in Git, e cercando di imparare la differenza tra git pull
vs git rebase
. Qualcuno può fornire un esempio di quando utilizzare quale opzione poiché ritengo che entrambe abbiano lo stesso scopo.
Sono un noob in Git, e cercando di imparare la differenza tra git pull
vs git rebase
. Qualcuno può fornire un esempio di quando utilizzare quale opzione poiché ritengo che entrambe abbiano lo stesso scopo.
Risposte:
git pull
e git rebase
non sono intercambiabili, ma sono strettamente collegati.
git pull
recupera 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 .
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:
SOME-FEATURE
Ora vuoi vedere le sue e le tue modifiche nella filiale locale. Quindi fai il checkout master
branch:
git checkout master
quindi puoi tirare:
git pull origin master
e poi vai nella tua filiale:
git checkout SOME-FEATURE
e puoi fare rebase master
per 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.
git fetch
allora git rebase origin/master
.
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.