292 votes

Comment jeter locale s'engage dans Git?

J'avais travaillé sur quelque chose, et a décidé qu'il était complètement vissé...après avoir commis certaines d'entre elles. J'ai donc essayé la séquence suivante:

git reset --hard
git rebase origin
git fetch
git pull
git checkout

À quel point j'ai le message

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

Je veux jeter mon local s'engage, sans avoir à effacer mon répertoire local et retélécharger le tout. Comment puis-je le réaliser?

650voto

mipadi Points 135410
$ git reset --hard origin/master

va supprimer toutes les engage pas dans origin/master.

35voto

slebetman Points 28276

En aparté, en dehors de la réponse par la mipadi (qui devrait fonctionner en passant), vous devez savoir que cela:

git branch -D master
git checkout master

aussi est exactement ce que vous voulez sans having to redownload everything (votre devis paraphrasé). C'est parce que votre repo local contient une copie de la télécommande repo (et que la copie n'est pas le même que celui de votre répertoire local, il n'est même pas le même que celui de votre extrait de branche).

Éliminer une branche est parfaitement sûr et à la reconstruction de cette branche est très rapide et n'implique pas de trafic réseau. Rappelez-vous, git est principalement un local pensions de par sa conception. Même à distance les branches ont une copie locale. Il n'y a qu'un peu de métadonnées qui indique à git qu'une copie locale est en fait une branche distante. Dans git, tous les fichiers sont sur votre disque dur tout le temps.

3voto

Vous devez exécuter

git fetch

Pour obtenir toutes les modifications et que vous ne recevrez pas de message avec "votre branche est à venir".

1voto

Jim Clouse Points 1688

J'ai vu des cas où la distance est devenue de synchronisation et devait être mis à jour. Si un reset --hard ou branch -D ne fonctionnent pas, essayez de

git pull origin
git reset --hard 

0voto

ramp Points 26

J'ai dû faire :

git checkout -b master

que git a dit qu'il n'existe pas, parce qu'il a été essuyez-les avec la

git -D master

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