J'ai un référentiel Git distant, et je dois ramener les derniers n
commits dans l'oubli.
111
Vous pouvez utiliser git revert <commit>…
pour tous les n commits, puis pousser comme d'habitude, en gardant l'historique inchangé.
Ou vous pouvez "revenir en arrière" avec git reset --hard HEAD~n
. Si vous poussez dans un référentiel public ou partagé, vous pouvez diverger et interrompre le travail des autres en fonction de votre branche d'origine. Git vous empêchera de le faire, mais vous pouvez l'utiliser git push -f
pour forcer la mise à jour.
git reset --hard [sha1]
où sha1 est l'identificateur de hachage de validation.revert
entraînera la fusion de vos branches de fonctionnalités comme "déjà" fusionnées. C'est parce que ces branches sont en train d'être fusionnées. Mais les changements ont été annulés. Solution: choisissez Cherry ou annulez la validation de retour .reset --hard
également que les branches de fonctionnalités sont traitées comme déjà fusionnées? Mon hypothèse est que ce ne serait pas (où lerevert
ferait).elmarco a raison ... sa suggestion est la meilleure pour les référentiels partagés / publics (ou, au moins, les branches publiques). S'il n'a pas été partagé (ou si vous êtes prêt à perturber les autres), vous pouvez également pousser une référence particulière:
Ou, s'il y a un commit SHA1 particulier (disons 1e4f99e sous forme abrégée), vous souhaitez revenir:
la source
Heureusement, j'étais en mesure d'utiliser la solution de Pat Notz qui a complètement supprimé le commit indésirable. Cependant, au départ, j'ai eu l'erreur
Mais l'ajout de l'
-f
option force ( ) écrase cette erreurla source
Si vous avez un accès direct au référentiel distant, vous pouvez toujours utiliser:
Cela fonctionne car il n'y a aucune tentative de modifier le répertoire de travail inexistant. Pour plus de détails, veuillez consulter la réponse originale:
Comment puis-je annuler la validation du dernier commit dans un dépôt nu git?
la source
--soft
même nécessaire? Vous pourriez probablement faire la même chose avec tout simplementgit reset
, sans l'indicateur de mode.