ne autre question dit git pull
est comme un git fetch
+ git merge
.
Mais quelle est la différence entre git pull
VS git fetch
+ git rebase
?
Votre question devrait indiquer assez clairement que vous vous interrogez simplement sur la différence entre git merge
et git rebase
.
Supposons donc que vous êtes dans le cas habituel - vous avez travaillé sur votre branche principale et extrait de Origin, qui a également effectué du travail. Après l'extraction, les choses ressemblent à ceci:
- o - o - o - H - A - B - C (master)
\
P - Q - R (Origin/master)
Si vous fusionnez à ce stade (le comportement par défaut de git pull), en supposant qu'il n'y ait aucun conflit, vous vous retrouvez avec ceci:
- o - o - o - H - A - B - C - X (master)
\ /
P - Q - R --- (Origin/master)
Si par contre vous faisiez le rebase approprié, vous vous retrouveriez avec ceci:
- o - o - o - H - P - Q - R - A' - B' - C' (master)
|
(Origin/master)
Le contenu de votre arbre de travail devrait aboutir au même résultat dans les deux cas; vous venez de créer un historique différent menant à celui-ci. La nouvelle base réécrit votre historique, donnant l’impression que vous avez commis au-dessus de la nouvelle branche principale d’Origine (R
), au lieu de celui où vous avez initialement commis (H
). Vous ne devriez jamais utiliser l'approche de base si quelqu'un d'autre a déjà retiré de votre branche principale.
Enfin, notez que vous pouvez réellement configurer git pull
pour qu'une branche donnée utilise rebase au lieu de fusionner en définissant le paramètre de configuration branch.<name>.rebase
sur true. Vous pouvez également le faire pour un seul pull en utilisant git pull --rebase
.
git pull
revient à exécuter git fetch
puis git merge
git pull --rebase
est comme git fetch
alors git rebase
git pull
est comme un git fetch
+ git merge
.
"Dans son mode par défaut, git pull est un raccourci pour
git fetch
suivi degit merge
FETCH_HEAD" Plus précisément,git pull
exécutegit fetch
avec les paramètres donnés puis appellegit merge
fusionner les têtes de branches récupérées dans la branche actuelle "
(Réf.: https://git-scm.com/docs/git-pull )
'Mais quelle est la différence entre git pull
VS git fetch
+ git rebase
'
Encore une fois, de la même source:git pull --rebase
"Avec --rebase, il exécute git rebase au lieu de git merge."
'la différence entre merge
et rebase
'
on y répond aussi:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(différence entre la modification de l’enregistrement de l’historique des versions)