Comment faire pour résoudre git d'erreur: “les Mises à jour ont été rejetées parce que la pointe de votre branche courante est derrière”
J'ai récemment commencé à utiliser Git (précédemment, j'ai utilisé de la subversion, mais je suis en train de faire quelque travail collaboratif sur un projet qui utilise bitbucket et git).
Tout allait bien jusqu'à aujourd'hui, lorsque je trouver la signification collègue a poussé les modifications au lieu de faire une branche. Cela signifie que lorsque je tente de commettre, je reçois l'erreur:
Mises à jour ont été rejetées parce que la pointe de votre branche courante est derrière
Je sais que cela doit être résolu en faisant une demande d'extraction de re-synchronisation des choses, mais je ne veux pas perdre les modifications que j'ai faites localement et j'ai aussi ne veux pas la force de le commettre et d'effacer les modifications apportées par quelqu'un d'autre.
Quelle est la bonne approche pour me permettre de fusionner les modifications sans perdre un ou l'autre?
git stash
vos modifications (si ils sont non validée), la synchronisation à distance, réappliquer modifications avecgit stash pop
- Malheureusement, j'avais déjà fait un couple de modifications locales, avant de tenter de le pousser et de réaliser le problème. Comment dois-je traiter avec ces?
Vous devez vous connecter pour publier un commentaire.
Si vous avez déjà fait quelques révisions, vous pouvez effectuer les opérations suivantes
Cela mettra tous vos locaux s'engage sur le dessus de nouveau tiré des changements.
ÊTRE TRÈS PRUDENT AVEC CE: ce ne sera probablement remplacer tous vos fichiers avec les fichiers car ils sont à la tête de la direction générale de la télécommande repo! Si cela se produit et que vous ne voulez pas qu'il vous pouvez ANNULER CETTE MODIFICATION avec
... naturellement, vous devez le faire avant de faire tout les nouveaux commits!
git pull --rebase <remote> <branch>
et puis de résoudre les conflits de fusion. Puisgit add
et enfingit rebase --continue
. Quelque chose peut-être avec votre local et à distance des branches qui doit être corrigé.Je voudrais le faire de cette façon:
Scène unstaged changements.
Cachette les modifications.
De synchronisation à distance.
Réappliquer les modifications locales.
ou
git pull -r
signifie que tous les commits que vous avez fait par rapport à la tête de la branche distante sera totalement détruit! Votre "stash" ne seront modifications par rapport à votre dernière validation! L'OP dit dans un commentaire "j'avais déjà fait quelques modifications locales, avant de tenter de pousser" ...git pull -r
est une question de préférence personnelle, comme je l'ai indiqué. Et je voudrais l'utiliser sur des scénarios, lorsque cela n'entraînera pas de conflits de fusion ou de commettre la destruction en tant que @mike l'a mentionné. Sinon,git pull
suffirait. La beauté de l'utilisationgit pull -r
, à mon avis, dans la situation ci-dessus lorsqu'il n'entraîne pas de conflit de fusion, c'est qu'il met de ma région s'engage sur le dessus (c'est à dire nettoyant l'historique) en ne créant pas de l'extra automatiquemerge
commettre que je trouve que du "bruit" et évitables.J'ai eu le même problème. Malheureusement, j'ai été dans le mal, catalogue de niveau.
J'ai essayé de:
git push -u origin master
-> il y avait une erreurEnsuite, j'ai essayé:
git pull --rebase
-> il n'y avait toujours un problèmeFinalement j'ai changer de répertoire
cd your_directory
Ensuite, j'ai essayé à nouveau (
git push
) et ça marche!!!J'ai été en mesure de surmonter ce problème grâce à Visual Studio 2017 changer:
Voir: https://docs.microsoft.com/en-us/vsts/git/concepts/git-config?view=vsts&tabs=visual-studio#rebase-local-branch-when-pulling
J'ai eu exactement le même problème sur ma branche(appelons cela de la branche B) et j'ai suivi trois étapes simples pour obtenir le faire fonctionner
Maintenant, vous pouvez supprimer de la branche B, puis renommer branche C à direction de B.
Espère que cette aide.