J'avais travaillé sur quelque chose et décidé que c'était complètement foutu ... après en avoir commis une partie. J'ai donc essayé la séquence suivante:
git reset --hard
git rebase Origin
git fetch
git pull
git checkout
A quel moment j'ai reçu le message
Your branch is ahead of 'Origin/master' by 2 commits.
Je veux supprimer mes commits locaux, sans avoir à effacer mon répertoire local et tout télécharger à nouveau. Comment puis-je accomplir cela?
git reset --hard Origin/master
supprimera tous les commits qui ne sont pas dans Origin/master
où Origin
est le nom du référentiel et master
est le nom de la branche.
En passant, mis à part la réponse de mipadi (qui devrait fonctionner d'ailleurs), vous devriez savoir que faire:
git branch -D master
git checkout master
fait aussi exactement ce que vous voulez sans having to redownload everything
(votre citation paraphrasée). En effet, votre référentiel local contient une copie du référentiel distant (et cette copie n’est pas identique à votre répertoire local, elle n’est même pas identique à votre branche extraite).
Effacer une branche est parfaitement sécurisé et reconstruire cette branche est très rapide et ne nécessite aucun trafic réseau. Rappelez-vous que git est avant tout un repo local par conception. Même les succursales distantes ont une copie sur le local. Il n’ya que quelques métadonnées qui indiquent à git qu’une copie locale spécifique est en réalité une branche distante. Dans git, tous les fichiers sont sur votre disque dur tout le temps.
Si vous n'avez pas d'autres branches que master, vous devriez:
git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
Ce que je fais est que j'essaye de réinitialiser dur à HEAD. Cela effacera tous les commits locaux:
git reset --hard HEAD^
Vous devez courir
git fetch
Pour obtenir toutes les modifications et vous ne recevrez plus de message avec "votre succursale est en avance".
J'ai vu des cas où la télécommande était désynchronisée et devait être mise à jour. Si un reset --hard
ou un branch -D
échoue, essayez
git pull Origin
git reset --hard
Je devais faire un:
git checkout -b master
comme git a dit qu'il n'existe pas, car il a été essuyé avec le
git -D master