2016-03-22 35 views
6

Sono un noob in Git e sto cercando di imparare la differenza tra git pull vs git rebase. Qualcuno può fornire un esempio su quando utilizzare l'opzione in quanto ritengo che entrambi abbiano lo stesso scopo.Git Pull vs Git Rebase

+0

Hai provato a leggere la documentazione? Spoiler: non hanno lo stesso scopo –

+0

Ho letto la documentazione. Come ho detto che sono un noob e ho iniziato ad imparare. – user4943236

+0

@TimCastelijns puoi vedere la risposta di Peter. Ha dichiarato esplicitamente che questi sono strettamente connessi, e quindi la confusione è sorto e quindi ho posto una domanda. Puoi rimuovere downvote – user4943236

risposta

8

git-pull - Fetch da e integrare con un altro repository o una filiale locale GIT PULL

In sostanza si sta tirando ramo remoto al vostro locale, ad esempio:

git pull origin master 

tirerà ramo principale nel repository locale

git-rebase - Forward-port commit locali alla testa monte aggiornato GIT REBASE

Questo sta mettendo le modifiche locali in cima cambiamenti fatti a distanza da altri utenti. Per esempio:

  • Hai commesso alcuni cambiamenti sulla vostra filiale locale per esempio chiamato SOME-FEATURE
  • Il tuo amico nel frattempo stava lavorando su altre caratteristiche e lui fuse suo ramo in padrone

Ora vuoi vedere i suoi e i tuoi cambiamenti nella tua filiale locale. Allora si checkout master ramo:

git checkout master 

allora si può tirare:

git pull origin master 

e poi si va a vostra filiale:

git checkout SOME-FEATURE 

e si può fare rebase master per ottenere le ultime modifiche da esso e metti il ​​tuo ramo in cima:

git rebase master 

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

12

git pull e git rebase non sono intercambiabili, ma sono strettamente connessi.

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 unendo, cioè le modifiche locali sono unite nelle modifiche remote. Quindi git pull è simile a git fetch & git merge.

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

È possibile eseguire pull usando rebase anziché unione (git pull --rebase). Le modifiche locali apportate verranno ridefinite in base alle modifiche remote, anziché essere unite alle modifiche remote.

Atlassian come eccellente documentation on merging vs. rebasing.