La différence entre la commande git pull et git pull --rebase
J'ai commencé à utiliser git parfois en arrière et de ne pas bien comprendre les subtilités. Ma question de base ici est de savoir la différence entre un git pull
et git pull --rebase
, depuis l'ajout de la --rebase
option ne semble pas faire quelque chose de très différent : il suffit de ne un pull.
S'il vous plaît aidez-moi à comprendre la différence.
- Connexes: Quand dois-je utiliser git pull --rebase?.
- Double Possible de git pull VS git fetch git rebase
- Lien utile: atlassian.com/git/tutorials/rewriting-history/git-rebase
Vous devez vous connecter pour publier un commentaire.
git pull
=git fetch
+git merge
à l'encontre de suivi en amont de la branchegit pull --rebase
=git fetch
+git rebase
à l'encontre de suivi en amont de la brancheSi vous voulez savoir comment
git merge
etgit rebase
diffèrent, lire ce.git pull --rebase
est le même quegit fetch
etgit rebase
est fondamentalement la façon dont il est, mais ce n'est pas exactement sémantiquement équivalentes. Il y a quelques différences, dont certaines sont expliquées ici. gitolite.com/git-pull--rebaseRépondre prises à partir de (et légèrement modifié):
http://gitolite.com/git-pull--rebase
a---b+c---d+e---f---p'---q'---r' (foo)
depuis rebase les changements de valeurs de hachage.A
, et j'ai envoyé un PR à l'amont des pensions qui a été accepté. Puis, quand je n'aigit pull --rebase
contre l'amont repo, je n'ai pas de nouvellesA'
s'engager sur le dessus de l'tiré en amont des pensions. En fait, pas deA'
existait. Est-ce parce queA
a été fusionné dans le système? Ou est-ce parce qu'il n'y a pas de différence entre l'amont et mon relocalisée sur la version?git pull --rebase
. Mais une chose qui me confond dans cette situation hypothétique est que le responsable amont a changé de projet de l'histoire qui a déjà été tiré dans les locaux du développeur dépôts. N'est-ce pas juste une mauvaise pratique en général? S'il voulait l'écraser s'engage/réécrire l'histoire, il doit avoir été effectué avant de l'intégrer dans le référentiel central pour éviter ce type de conflits.Supposons que vous avez deux s'engage dans les locaux de la direction de la
Après "git pull", sera:
Après "git pull --rebase", il n'y aura pas de fusion point G. Remarque que le D et le E devient différente s'engage à:
Dans la plupart des cas simple de pas de collisions
Voir aussi:
man git-pull
Voir aussi:
Quand dois-je utiliser git pull --rebase?
http://git-scm.com/book/en/Git-Branching-Rebasing
git sdd modified-file; git rebase --continue
ou de fusion:git add modified-file; git commit;
oùmodified-file
est votre local de fichier que vous avez modifié manuellement/mergetoolPour ce qui est important de comprendre la différence entre Fusion et Rebase.
Pour des détails, reportez - http://www.derekgourlay.com/archives/428