J'ai une branche locale d'un projet ("configUpdate") que j'ai extraite du projet de quelqu'un d'autre et j'ai fait un tas de changements dessus et j'aimerais fusionner les changements qu'ils ont apportés à ma branche locale.
J'ai essayé
git pull --rebase origin configUpdate
mais il n'a pas saisi les derniers changements - comment puis-je fusionner les deux? (aussi pour les points bonus, qu'est-ce que j'ai fait avec la pull --rebase
commande?)
Réponses:
Depuis votre branche de fonctionnalité (par exemple
configUpdate
) exécutez:Ou la forme plus courte:
Pourquoi cela fonctionne:
git merge branchname
prend de nouvelles validations de la branchebranchname
et les ajoute à la branche actuelle. Si nécessaire, il ajoute automatiquement un commit "Merge" en haut.git rebase branchname
prend de nouveaux commits de la branchebranchname
et les insère "sous" vos modifications. Plus précisément, il modifie l'historique de la branche actuelle de sorte qu'il soit basé sur la pointe debranchname
, avec toutes les modifications que vous avez apportées en plus.git pull
est fondamentalement le même quegit fetch; git merge origin/master
.git pull --rebase
est fondamentalement le même quegit fetch; git rebase origin/master
.Alors pourquoi voudriez-vous utiliser
git pull --rebase
plutôt quegit pull
? Voici un exemple simple:Vous commencez à travailler sur une nouvelle fonctionnalité.
Au moment où vous êtes prêt à pousser vos modifications, plusieurs validations ont été poussées par d'autres développeurs.
Si vous
git pull
(qui utilise la fusion), vos modifications seront enterrées par les nouvelles validations, en plus d'une validation de fusion créée automatiquement.Si vous préférez
git pull --rebase
, git fera avancer rapidement votre maître vers l'amont, puis appliquera vos modifications en haut.la source
J'ai découvert que c'était:
la source
pull --rebase
n'a pas fonctionné carorigin
pointait votre fourchette. Cela aurait fonctionné si vous l'aviez faitgit pull --rebase upstream/master
.Passez à votre succursale locale
Fusionnez le maître distant avec votre succursale
En cas de conflits, corrigez-les et pour chaque fichier en conflit, exécutez la commande
Continuer le rebasage
la source
git rebase ne semblait pas fonctionner pour moi. Après git rebase, lorsque j'essaie de pousser les modifications dans ma branche locale, je continuais à recevoir une erreur ("indice: les mises à jour ont été rejetées car la pointe de votre branche actuelle se trouve derrière son homologue distant. Intégrez les modifications distantes (par exemple 'git pull. .. ') avant de pousser à nouveau. ") même après avoir tiré. Ce qui a finalement fonctionné pour moi, c'est la fusion de git.
Si vous êtes un débutant comme moi, voici un bon article sur git merge vs git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
la source