479 votes

Votre direction est en avance de 'origin/master' par 3 s'engage

Je suis arriver suivantes lors de l'exécution d' git status

Your branch is ahead of 'origin/master' by 3 commits.

J'ai lu sur un autre post le moyen de résoudre ce problème est géré git pull --rebase mais quelle est exactement cela, je vais perdre des données ou est-ce un moyen simple de synchroniser avec le maître?

1026voto

iberbeu Points 1191

Vous obtenez ce message, car vous avez fait des changements dans votre maître et vous n'avez pas les pousser à distance. Vous avez plusieurs façons de "résoudre" et normalement, il dépend de la façon dont votre flux de travail ressemble à:

  • Dans un bon flux de travail de votre copie distante de master doit être la bonne, tandis que votre copie locale de master est juste une copie de l'un à distance. L'utilisation de ce flux de travail, vous n'aurez jamais l'obtenir à nouveau ce message.
  • Si vous travaillez dans un autre chemin et vos changements locaux devraient être poussé puis juste git push origin en supposant que l'origine est de votre télécommande
  • Si vos modifications locales sont mauvais, puis il suffit de les supprimer ou réinitialiser votre maître local de l'état sur la télécommande git reset --hard origin/master

46voto

pmr Points 30450

Il n'y a rien à corriger. Vous avez simplement fait 3 s'engage et ne s'est pas déplacé à la branche distante encore. Il y a plusieurs options, en fonction de ce que vous voulez faire:

  • git push: déplacez vos modifications à la distance (ce peut être rejetée si il y a déjà d'autres modifications sur la télécommande)
  • ne rien faire et de garder le codage, la synchronisation d'un autre jour
  • git pull: obtenir les changements (le cas échéant) de la télécommande et de les fusionner dans vos modifications
  • git pull --rebase: comme ci-dessus, mais essayer de refaire vos commits sur le haut de la télécommande changements

Vous êtes dans une situation classique (bien que généralement vous n'auriez pas s'engager beaucoup sur le maître dans la plupart des flux de travail). Voici ce que je ferais normalement: Examen de mes modifications. Peut-être faire une git rebase --interactive pour certains cosmétiques, chute de ceux qui les sucer, de les réorganiser afin de les rendre plus logique. Maintenant déplacer à la distance avec git push. Si c'est rejetée parce que ma branche locale n'est pas à jour: git pull --rebase de refaire mon fonctionnent sur les modifications les plus récentes et git push de nouveau.

11voto

Sylvain Defresne Points 15231

Ce message d' git signifie que vous avez réalisé trois s'engage, dans votre local repo, et n'ont pas publié à l' master référentiel. La commande à exécuter pour qui est - git push {local branch name} {remote branch name}.

La commande git pull (et git pull --rebase) sont pour l'autre situation lorsqu'il y a de s'engager sur la télécommande pensions que vous n'avez pas dans votre local repo. L' --rebase option, git se déplacera à votre validation de côté, synchroniser avec la télécommande du repo, et puis essayer d'appliquer vos trois commettre de l'état neuf. Il peut échouer si il y a des conflits, mais ensuite, vous serez invité à les résoudre. Vous pouvez également annuler l' rebase si vous ne savez pas comment résoudre les conflits à l'aide d' git rebase --abort et vous obtiendrez de revenir à l'état avant l'exécution d' git pull --rebase.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X