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?

24
demandé sur Finglish 2014-03-20 16:24:13

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!

46
répondu Akash Agrawal 2017-11-19 14:56:55

Je le ferais de cette façon:

  1. Etape toutes les modifications non échelonnées.

    git add .
    
  2. Cachez les modifications.

    git stash save
    
  3. Synchronisation avec la télécommande.

    git pull -r
    
  4. Réappliquez les modifications locales.

    git stash pop
    

    Ou

    git stash apply
    
16
répondu Rebecca Abriam 2014-03-20 12:41:49

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!

2
répondu Paweł R 2017-06-27 13:29:44

J'ai pu surmonter ce problème avec le changement Visual Studio 2017 suivant:

  1. 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.
  2. Définissez Rebase la branche locale en tirantsur le paramètre souhaité (pour moi, c'était True), et sélectionnez Update pour enregistrer.

Voir: https://docs.microsoft.com/en-us/vsts/git/concepts/git-config?view=vsts&tabs=visual-studio#rebase-local-branch-when-pulling

1
répondu Taersious 2018-07-20 16:29:43