Git Pull vs Git Rebase

127

Je suis un noob dans Git, et essayer d'apprendre la différence entre git pullvs git rebase. Quelqu'un peut-il donner un exemple quand utiliser quelle option puisque j'estime que les deux servent le même objectif.

user4943236
la source
Oui je l'ai fait. La différence entre pull et rebase est que pull effectue une fusion. La réponse à votre question se trouve donc sur le lien que j'ai collé.
Thibault D.
1
@ user4943236 1) vous ne savez même pas qui a voté contre votre question, n'accusez pas les gens sans raison 2) si c'était mon vote défavorable, je ne le supprimerais pas simplement parce que c'est si facile de trouver une réponse en lisant documentation
Tim
Est-ce que cela répond à votre question? git pull VS git fetch Vs git rebase
Shiwangini

Réponses:

131

git pullet git rebasene sont pas interchangeables, mais ils sont étroitement liés.

git pullrécupère les dernières modifications de la branche actuelle à partir d'une télécommande et applique ces modifications à votre copie locale de la branche. Généralement, cela se fait par fusion, c'est-à-dire que les modifications locales sont fusionnées dans les modifications distantes. Donc git pullest similaire à git fetch & git merge.

Le rebasage est une alternative à la fusion. Au lieu de créer un nouveau commit qui combine les deux branches, il déplace les commits de l'une des branches sur l'autre.

Vous pouvez tirer en utilisant rebase au lieu de merge ( git pull --rebase). Les modifications locales que vous avez apportées seront rebasées en plus des modifications à distance, au lieu d'être fusionnées avec les modifications à distance.

Atlassian a une excellente documentation sur la fusion et le rebasage .

Peter
la source
52

git-pull - Récupérer et intégrer avec un autre référentiel ou une branche locale GIT PULL

Fondamentalement, vous tirez la branche distante vers votre local, par exemple:

git pull origin master

Tirera la branche principale dans votre référentiel local

git-rebase - Les commits locaux du port de transfert vers la tête amont mise à jour GIT REBASE

Celui-ci met vos modifications locales au-dessus des modifications effectuées à distance par d'autres utilisateurs. Par exemple:

  • Vous avez validé des modifications sur votre succursale locale par exemple appelée SOME-FEATURE
  • Votre ami travaillait entre-temps sur d'autres fonctionnalités et il a fusionné sa branche avec master

Vous voulez maintenant voir ses modifications et vos modifications dans votre succursale locale. Alors vous passez à la caisse master:

git checkout master

alors vous pouvez tirer:

git pull origin master

puis vous vous rendez dans votre agence:

git checkout SOME-FEATURE

et vous pouvez faire un rebase masterpour obtenir les dernières modifications et mettre vos commits de branche en haut:

git rebase master

J'espère que maintenant c'est un peu plus clair pour vous.

Tomasz
la source
15
Vous n'avez pas besoin de commander le maître. Restez sur votre branche et faites: git fetchalors git rebase origin/master.
Antoine Martin
1
En vérifiant le maître local, puis en tirant sur le maître d'origine, vous mettrez également à jour votre maître local. C'est l'une des meilleures pratiques à utiliser
Ashwani
21

En un mot :

-> Git Merge: il fusionnera simplement vos modifications et celles à distance, et cela créera un autre enregistrement d'historique de validation

-> Git Rebase: Cela placera vos modifications au-dessus de toutes les nouvelles modifications à distance et réécrira l'historique des commit, de sorte que votre historique de commit sera beaucoup plus propre que git merge. Rebase est une opération destructrice. Cela signifie que si vous ne l'appliquez pas correctement, vous risquez de perdre le travail engagé et / ou de rompre la cohérence des référentiels d'autres développeurs.

Saurin Vala
la source