Je reçois les éléments suivants lors de l'exécution git status
Your branch is ahead of 'origin/master' by 3 commits.
J'ai lu sur un autre post la façon de résoudre ce problème, git pull --rebase
mais qu'est-ce que le rebase exactement, vais-je perdre des données ou est-ce un moyen simple de synchroniser avec le maître?
git
git-rebase
FluxEngine
la source
la source
Réponses:
Vous obtenez ce message parce que vous avez apporté des modifications à votre maître local et que vous ne les avez pas poussés à distance. Vous avez plusieurs façons de le "résoudre" et cela dépend normalement de l'apparence de votre flux de travail:
git push origin
supposez simplement que l'origine est votre télécommandegit reset --hard origin/master
la source
git diff master origin/master
(c.-à-d.git diff local remote
) Pour voir les changements que vous supprimerezgit push origin master:branch
qui est retournéEverything up-to-date
, après quoi le message d'être en avance par x commits est parti.Il n'y a rien à réparer. Vous avez simplement effectué 3 validations et ne les avez pas encore déplacées vers la branche distante. Il existe plusieurs options, selon ce que vous voulez faire:
git push
: déplacez vos modifications vers la télécommande (cela pourrait être rejeté s'il y a déjà d'autres modifications sur la télécommande)git pull
: récupérez les modifications (le cas échéant) de la télécommande et fusionnez-les dans vos modificationsgit pull --rebase
: comme ci-dessus, mais essayez de refaire vos validations en plus des modifications à distanceVous êtes dans une situation classique (bien que vous n'engagiez généralement pas beaucoup sur master dans la plupart des workflows). Voici ce que je ferais normalement: revoir mes modifications. Peut-être faire un
git rebase --interactive
pour faire des cosmétiques sur eux, laisser tomber ceux qui sucent, les réorganiser pour les rendre plus logiques. Déplacez-les maintenant vers la télécommande avecgit push
. Si cela est rejeté parce que ma succursale locale n'est pas à jour:git pull --rebase
refaire mon travail en plus des dernières modifications etgit push
encore.la source
your team lead merged to master
? N'avez-vous pas dit que vous aviez déjà poussé à maîtriser? Que contient le commit supplémentaire? Essayezgit diff origin/master
de voir en quoi votre succursale locale diffère de la télécommande.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 les modifications de branche distante et remplacez-les par leurs modifications en cas de conflit. Ici, si vous le faites,
git status
vous obtiendrez quelque chose comme ça, votre branche est en avance sur «origine / maître» par 3 commits.Étape 3 :
git reset --hard origin/<branch_name>
Étape 4 :
git fetch
Réinitialisez votre branche.
Prendre plaisir.
la source
Je suis tombé sur ce problème après avoir fusionné une demande d'extraction sur Bitbucket.
Devais faire
et c'était tout.
la source
Habituellement, si je dois vérifier quels sont les commits qui diffèrent du master que je fais:
De cette façon, je peux voir les commits et décider de le supprimer ou de choisir ...
la source
git diff ...
magies ne fonctionneraient pas. Quand je l'ai fait, cela m'a donnénoop
le seul commit, et quand je l'ai accepté, maintenant ma branche est synchronisée avec origin / master. Il semble donc que les validations diff de origin / master n'étaient en fait rien.Ce message de
git
signifie que vous avez effectué trois validations dans votremaster
référentiel local et que vous ne les avez pas publiées dans le référentiel. La commande à exécuter pour cela estgit push {local branch name} {remote branch name}
.La commande
git pull
(etgit pull --rebase
) concerne l'autre situation lorsqu'il y a une validation sur le référentiel distant que vous n'avez pas dans votre référentiel local. L'--rebase
option signifie que vousgit
allez déplacer votre commit local de côté, synchroniser avec le dépôt distant, puis essayer d'appliquer vos trois commit à partir du nouvel état. Il peut échouer en cas de conflit, mais vous serez ensuite invité à les résoudre. Vous pouvez également abandonner lerebase
si vous ne savez pas comment résoudre les conflits à l'aide degit rebase --abort
et vous reviendrez à l'état avant d'exécutergit pull --rebase
.la source
Si votre git dit que vous êtes engagé à l'avance, alors tout d'abord,
Pour vous assurer que vous avez poussé tous vos derniers travaux dans le repo
Alors,
Pour réinitialiser et correspondre avec le référentiel
la source
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 a été résolu. J'espère que ça aide!!!
la source
enfin:
la source