J'avais travaillé sur quelque chose et j'ai décidé qu'il é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
À quel moment j'ai reçu le message
Your branch is ahead of 'origin/master' by 2 commits.
Je veux supprimer mes validations locales , sans avoir à effacer mon répertoire local et tout télécharger à nouveau. Comment puis-je y parvenir?
git fetch
etgit pull
- pull est une combinaison de récupération et de fusion.Réponses:
supprimera toutes les validations qui ne se
origin/master
trouvent pas où seorigin
trouve le nom du référentiel etmaster
le nom de la branche.la source
origin/master
est une branche qui suit lamaster
branche duorigin
référentiel distant.origin/master
est une référence à lamaster
branche de la télécommande appeléeorigin
.En passant, à part la réponse de mipadi (qui devrait d'ailleurs fonctionner), vous devez savoir que faire:
fait également exactement ce que vous voulez sans
having to redownload everything
(votre devis paraphrasé). En effet, votre référentiel local contient une copie du référentiel distant (et cette copie n'est pas la même que votre répertoire local, elle n'est même pas la même que votre branche extraite).L'effacement d'une branche est parfaitement sûr et la reconstruction de cette branche est très rapide et n'implique aucun trafic réseau. N'oubliez pas que git est avant tout un dépôt local par conception. Même les succursales distantes ont une copie sur le local. Il n'y a qu'un peu de métadonnées qui indiquent à git qu'une copie locale spécifique est en fait une branche distante. Dans git, tous les fichiers sont constamment sur votre disque dur.
Si vous n'avez pas de succursales autres que master, vous devez:
la source
Cannot delete the branch 'master' which you are currently on.
git checkout -b temp;git branch -D master;git checkout master;git branch -D temp
origin/master
sur votre machine locale. C'est votre copie locale (complète) de la branche distante. La vraie branche distante estorigin master
.git branch -D master
n'était pas nécessaire, car comme indiqué, cela génère une erreur.Ce que je fais, c'est que j'essaie de réinitialiser dur à HEAD. Cela effacera tous les commits locaux:
la source
^
représente le commit parent, donc la réinitialisationHEAD^
annule les modifications non validées et déplace la branche vers le commit précédent, "supprimant" effectivement le commit le plus récent (bien que le commit existe toujours, la branche ne le pointe pas). La réponse n'aura qu'une seule validation locale et les autres sont des modifications non validées. @karim @giangVous devez courir
Pour obtenir toutes les modifications, vous ne recevrez pas de message avec "votre succursale est en avance".
la source
J'ai vu des cas où la télécommande n'était plus synchronisée et devait être mise à jour. Si un
reset --hard
ou unbranch -D
ne fonctionne pas, essayezla source
reset --hard
ça marche dans cette situationreset --hard
devrait fonctionner ici. Cependant, je souligne simplement qu'il échoue parfois à réinitialiser correctement la branche et que lagit pull origin
synchronisation de la télécommande et lereset --hard
fonctionnement correct seront effectués .Je devais faire un:
comme git a dit qu'il n'existe pas, car il a été essuyé avec le
la source