Comment résoudre l'erreur git: "les mises à jour ont été rejetées car la pointe de votre branche actuelle est derrière"
J'ai récemment commencé à utiliser Git (auparavant j'utilisais subversion mais je fais maintenant un travail collaboratif sur un projet qui utilise bitbucket et git).
Tout s'est bien passé jusqu'à aujourd'hui quand je trouve qu'un collègue bien intentionné a poussé des changements au maître au lieu de faire une branche. Cela signifie que lorsque j'essaie de commettre, j'obtiens l'erreur:
Les mises à jour ont été rejetées car la pointe de votre branche actuelle est derrière
Je sais que cela devrait être résolu par faire une demande d'extraction pour re-synchroniser les choses mais je ne veux pas perdre les modifications que j'ai apportées localement et je ne veux pas non plus forcer la validation et effacer les modifications apportées par quelqu'un d'autre.
Quelle est l'approche correcte pour me permettre de fusionner les modifications sans perdre non plus?
4 réponses
Si vous avez déjà effectué des commits, vous pouvez faire ce qui suit
git pull --rebase
Cela placera tous vos commits locaux au-dessus des modifications nouvellement extraites.
Soyez très prudent avec ce : cela écrasera probablement tous vos fichiers présents avec les fichiers car ils sont en tête de la branche dans le repo distant! Si cela se produit et que vous ne le vouliez pas, vous pouvez annuler cette modification avec
git rebase --abort
... naturellement vous devez le faire avant de faire tout nouveau s'engage!
Je le ferais de cette façon:
-
Etape toutes les modifications non échelonnées.
git add .
-
Cachez les modifications.
git stash save
-
Synchronisation avec la télécommande.
git pull -r
-
Réappliquez les modifications locales.
git stash pop
Ou
git stash apply
J'ai eu le même problème. Malheureusement, j'étais dans le mauvais niveau de catalogue.
J'ai essayé de: git push -u origin master
- > Il y avait une erreur
Ensuite, j'ai essayé: git pull --rebase
- > Il y avait toujours un problème
Enfin, je change de répertoire cd your_directory
Puis j'ai essayé à nouveau (git push
) et ça marche!
J'ai pu surmonter ce problème avec le changement Visual Studio 2017 suivant:
- dans Team Explorer, accédez à Paramètres . Accédez à Paramètres globaux pour configurer cette option au niveau global; accédez à Paramètres du référentiel pour configurer cette option au niveau repo.
- Définissez Rebase la branche locale en tirantsur le paramètre souhaité (pour moi, c'était True), et sélectionnez Update pour enregistrer.