web-dev-qa-db-fra.com

Votre branche est en avance sur 'Origin / master' de 3 commits

Je reçois le message suivant lors de l'exécution de git status

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

J'ai lu sur un autre article que la façon de résoudre ce problème est exécutée git pull --rebase mais qu'est-ce que rebase exactement, vais-je perdre des données ou est-ce un moyen simple de synchroniser avec maître?

286
FluxEngine

Vous recevez ce message parce que vous avez apporté des modifications à votre maître local et que vous ne les avez pas envoyées à distance. Vous avez plusieurs façons de le "résoudre" et cela dépend normalement de l'apparence de votre flux de travail:

  • Dans un bon flux de travail, votre copie distante du maître doit être la bonne tandis que votre copie locale du maître est simplement une copie de celle de remote. En utilisant ce flux de travail, vous ne recevrez plus jamais ce message.
  • Si vous travaillez d'une autre manière et que vos modifications locales doivent être appliquées, alors simplement _git Push Origin_ en supposant que l'origine est votre télécommande
  • Si vos modifications locales sont incorrectes, supprimez-les simplement ou réinitialisez votre maître local sur l'état de la télécommande git reset --hard Origin/master
612
iberbeu

Il n'y a rien à réparer. Vous avez simplement effectué 3 commits et ne les avez pas encore déplacés vers la branche distante. Il y a plusieurs options, selon ce que vous voulez faire:

  • git Push: déplacez vos modifications vers la télécommande (ceci peut être rejeté s'il y a déjà d'autres modifications sur la télécommande)
  • ne rien faire et continuer à coder, synchroniser un autre jour
  • git pull: récupère les modifications (le cas échéant) de la télécommande et les fusionne dans vos modifications
  • git pull --rebase: comme ci-dessus, mais essayez de refaire vos commits en plus des modifications à distance

Vous êtes dans une situation classique (même si, en général, la plupart des workflows ne nécessitent pas beaucoup de maîtrise). Voici ce que je ferais normalement: Passez en revue mes modifications. Peut-être faire un git rebase --interactive pour faire des cosmétiques sur eux, laissez tomber ceux qui sont nuls, réorganisez-les pour les rendre plus logiques. Maintenant déplacez-les vers la télécommande avec git Push. Si cela est rejeté parce que ma branche locale n'est pas à jour: git pull --rebase pour refaire mon travail en plus des modifications les plus récentes et git Push à nouveau.

35
pmr

Utilisez ces 4 commandes simples

Étape 1: git checkout <branch_name>

C'est évident d'aller dans cette branche.

étape 2: git pull -s recursive -X theirs

Prenez des modifications de branches distantes et remplacez-les par des modifications en cas de conflit. Ici si vous faites git status vous obtiendrez quelque chose comme ceci votre branche est en avance sur 'Origine/maître' de 3 commits.

étape: git reset --hard Origin/<branch_name>

étape 4: git fetch

Réinitialisez votre branche.

Prendre plaisir.

24
Abhishek Goel

Je suis tombé sur ce problème après avoir fusionné une demande d'extraction sur Bitbucket.

Devais faire

git fetch

et c'était tout.

14
Bitonator

Ce message de git signifie que vous avez effectué trois commits dans votre référentiel local et que vous ne les avez pas publiés dans le référentiel master. La commande à exécuter pour cela est git Push {local branch name} {remote branch name}.

La commande git pull (et git pull --rebase) s'appliquent à l'autre situation lorsqu'il existe des validations sur le référentiel distant que vous ne possédez pas dans votre référentiel local. L'option --rebase signifie que git déplacera votre commit local, se synchronisera avec le référentiel distant, puis tentera d'appliquer vos trois commit à partir du nouvel état. Il peut échouer en cas de conflit, mais vous serez alors invité à les résoudre. Vous pouvez également abandonner la rebase si vous ne savez pas comment résoudre les conflits à l'aide de git rebase --abort et que vous revenez à l'état antérieur à l'exécution de git pull --rebase.

11
Sylvain Defresne

Habituellement, si je dois vérifier quels sont les commits qui diffèrent de ceux du maître, je le fais:

git rebase -i Origin/master

De cette façon, je peux voir les commits et décider de les laisser tomber ou de choisir ...

7
Alex

Si votre git dit que vous vous engagez, alors tout d’abord,

git push origine

Pour vous assurer que vous avez poussé tous vos derniers travaux en repo

Ensuite,

réinitialisation git - origine dure/maître

Pour réinitialiser et faire correspondre avec le repo

4
Pratik Khadka

Cela m'est arrivé une fois après avoir fusionné une demande d'extraction sur Bitbucket.

Je devais juste faire:

git fetch

Mon problème était résolu. J'espère que ça aide!!!

3
sudhir Vishwakarma