Comment rétablir la branche principale en amont

145

J'ai forké un référentiel git et configuré en amont. J'ai fait quelques changements dans la branche Master et engagé et poussé vers github.

Maintenant, que dois-je faire pour abandonner toutes mes modifications dans la branche Master et la rendre identique à la branche master de l'amont?

Gelin Luo
la source

Réponses:

277

(Je suppose que les changements que vous voulez maintenant ignorer sont sur votre origintélécommande, vous êtes sur votre masterbranche et vous voulez revenir au contenu de la upstreamtélécommande)

Tout d'abord, réinitialisez votre copie de travail sur le maître en amont:

git remote update
# the double hyphen ensures that upstream/master is
# considered as a revision and not confused as a path
git reset --hard upstream/master --

Ensuite, poussez cette nouvelle tête de branche vers votre référentiel d'origine, en ignorant le fait que ce ne sera pas une avance rapide:

git push origin +master
Nickgrim
la source
14
Vous devrez peut-être également exécuter git remote add upstream <upstream_repo_url>si vous avez forké la branche à l'aide de GitHub.
Kato
3
Quelle est la signification du +in git push origin +master? Est-ce la même chose que juste git push origin master?
bluenote10
4
@ bluenote10 Ce ne sont pas les mêmes. C'est +ce qui dit à git de "[ignorer] le fait que ce ne sera pas une avance rapide". C'est un peu comme faire un git push --force, mais cela ne s'applique qu'à cette référence spécifique.
nickgrim
1
Cela n'a pas fonctionné pour moi. J'ai fait un statut git après qu'il y ait des éléments qui ont été modifiés. Je vais devoir essuyer et recommencer. Git est extrêmement difficile à comprendre.
Mitch
1
@mehmet Non, cela ne change que la branche sur laquelle vous vous trouvez.
John