J'ai récemment commencé à utiliser Git (auparavant, j'avais déjà utilisé Subversion, mais je travaille maintenant en collaboration sur un projet utilisant bitbucket et git).
Tout s'est bien passé jusqu'à aujourd'hui, quand j'ai découvert qu'un collègue bien intentionné avait proposé des modifications au Master au lieu de créer une branche. Cela signifie que lorsque j'essaie de commettre, j'obtiens l'erreur:
Les mises à jour ont été rejetées car le bout de votre branche actuelle est derrière
Je sais que cela devrait être résolu en faisant une demande d'extraction pour resynchroniser les choses, mais je ne veux pas perdre les modifications apportées localement et je ne veux pas non plus forcer la validation et supprimer les modifications apportées par quelqu'un d'autre. .
Quelle est la bonne approche pour me permettre de fusionner les modifications sans perdre l'une ou l'autre?
Si vous avez déjà effectué des commits, vous pouvez effectuer les opérations suivantes:
git pull --rebase
Cela placera tous vos commits locaux au-dessus des modifications récemment extraites.
SOYEZ TRÈS PRUDENT AVEC CECI: cela écrasera probablement tous vos fichiers présents avec les fichiers tels qu'ils se trouvent à la tête de la branche dans le dépôt distant! Si cela se produit et que vous ne le voulez pas, vous pouvez Annuler ce changement avec
git rebase --abort
... naturellement, vous devez le faire avant de faire de nouveaux commits!
Je le ferais de cette façon:
Mettez en scène tous les changements non mis en scène.
git add .
Cachez les changements.
git stash save
Sync 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
Puis 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 réessayé (git Push
) et il fonctionne!
J'ai pu surmonter ce problème avec la modification suivante de Visual Studio 2017:
J'ai eu exactement le même problème sur ma branche (appelons-la branche B) et j'ai suivi trois étapes simples pour que cela fonctionne
Vous pouvez maintenant supprimer la branche B, puis renommer la branche C en branche B.
J'espère que cela t'aides.