C'è una differenza tra git rebase upstream/master
e git pull --rebase upstream master
e, in caso affermativo, che cosa? Il telecomando potrebbe essere qualsiasi remoto, non necessariamente a monte.git rebase upstream/master vs git pull --rebase master upstream
risposta
innanzitutto, l'aggiornamento di upstream/master
viene eseguito.
Se hai appena rebase senza aggiornare prima upstream/master
, non sarà possibile ottenere lo stesso risultato.
ho illustrano in "master
branch and 'origin/master
' have diverged, how to 'undiverge' branches'?"
SnakE menzioni in the comments che git pull --rebase
non è esattamente git fetch && git rebase origin/master
.
Vedere "what does "git pull --rebase
" do?"
(origin/master)
|
A--B--C (master)
\
B'--D (actual origin/master after changing B and force pushing)
Cosa git pull --rebase
fa, in questo caso, è:
git fetch origin
git rebase --onto origin/master B master
Qui:
- origin/master è il nuovo aggiornato
origin/master
(B'
) B
è il vecchioorigin/master
(prima di una operazione di recupero aggiornati esso)master
è il ramo per riprodurre in cimaorigin/master
Questo differisce da git fetch
+ git rebase origin/master
a che il comando pull --rebase
cerca di scoprire che impegna sono davvero tuo locale quelli, che provenivano da monte in una raccolta precedente.
Per fare ciò, guarda il reflog del ramo di localizzazione remota (
origin/master
, in questo caso). Questo riferimento rappresenta i suggerimenti delle successive operazionigit fetch
suorigin
, nell'ordine "più recente prima".Per ciascuna voce di prospetto, (
origin/[email protected]{1}
, quindi...{2}
e così via) viene verificato se tale commit è un antenato dell'attuale capo di diramazionemaster
. Non appena ne trova uno, lo preleva come punto di partenza per il rebase (B
nell'esempio sopra).
- 1. Git Pull vs Git Rebase
- 2. `git svn rebase` vs` git rebase trunk`
- 3. git pull --rebase vs git rebase: qual è il pericolo?
- 4. git rebase dopo pull
- 5. git stash pop vs git rebase
- 6. Annulla un git pull --rebase?
- 7. Differenza tra git pull e git pull --rebase
- 8. git pull --rebase upstream e git push origin non rifiuta l'avanzamento rapido?
- 9. "git pull --rebase" porta a "Impossibile rebase su più rami"
- 10. git pull --rebase master di origine sembra rebase dall'inizio ogni volta
- 11. Equivalente mercurial di "git pull --rebase"
- 12. git rebase problemi
- 13. recupero da git rebase
- 14. Git rebase sottostruttura
- 15. git crash durante rebase
- 16. Git rebase commettere selezione
- 17. git safe rebase o "try rebase, fallback to merge"
- 18. git rebase un singolo commit
- 19. Git rebase cambia autore?
- 20. git-svn rebase errore
- 21. visualizza i commit caricati dopo git pull --rebase
- 22. Git: ripristina repository divergenti dopo rebase fallita
- 23. Cosa fa esattamente git rebase --skip?
- 24. Git: 'rebase' non è un comando git. Vedi 'git --help'
- 25. Contribuire a proiettare su github, come "rebase my pull request on top of master"
- 26. Git rebase un ramo sul master fallito, come risolvere?
- 27. Utilizzo di git-svn: Pull, Merge o Rebase?
- 28. Git pull --rebase conversione degli spazi in schede
- 29. Posso impostare un alias in git per "pull --rebase"?
- 30. Conflitti fusione Git colore/rebase
Quindi 'git pull --rebase upstream master' è analogo a' git fetch upstream && git rebase upstream/master'? – Dennis
@Dennis praticamente, si. – VonC
In realtà no. Immagina di aver tirato la storia 'A-B' e di aver apportato una modifica in cima,' A-B-C'. Poi qualcun altro ha modificato 'B' in' B'' e foce-ha spinto le loro modifiche in modo che l'origine sia ora 'A-B'-D'. Ora se esegui 'git fetch && git rebase origin/master' il rebase fallirà con i conflitti. Comunque 'git pull --rebase' lo capirà e finirà con' A-B'-D-C'. Una certa magia sta sicuramente accadendo sotto il tappeto in 'pull --rebase'. Modifica: [prooflink] (http://gitolite.com/git-pull--rebase.html) – SnakE