L'affiche originale déclare :
La meilleure réponse que l'on ait pu me donner était d'utiliser git revert
X fois jusqu'à ce que je atteigne l'engagement souhaité.
Donc disons que je veux revenir à un commit qui date de 20 commits, j'aurais l'exécuter 20 fois.
Existe-t-il un moyen plus simple de procéder ?
Je ne peux pas utiliser reset car ce repo est public.
Il n'est pas nécessaire d'utiliser git revert
X fois. git revert
peut accepter un comme argument, de sorte que vous n'avez besoin de l'utiliser qu'une seule fois pour inverser une gamme de commits. Par exemple, si vous voulez revenir sur les 20 derniers commits :
git revert --no-edit HEAD~20..
La gamme des engagements HEAD~20..
est le diminutif de HEAD~20..HEAD
et signifie "commencer par le 20 th parent du commit HEAD, et renverse tous les commits après lui jusqu'à HEAD".
Cela va inverser les 20 derniers engagements, en supposant qu'aucun d'entre eux ne soit une fusion de fusion. S'il y a des commits de fusion, alors vous ne pouvez pas les inverser tous en une seule commande, vous devrez les inverser individuellement avec la commande
git revert -m 1 <merge-commit>
Notez également que j'ai testé l'utilisation d'une gamme avec git revert
en utilisant la version 1.9.0 de git. Si vous utilisez une version antérieure de git, l'utilisation d'une plage avec git revert
peut ou ne peut pas fonctionner.
Dans ce cas, git revert
est préféré à git checkout
.
Notez que, contrairement à cette réponse qui dit d'utiliser git checkout
, git revert
supprimera en fait tous les fichiers qui ont été ajoutés dans l'un des commits que vous que vous inversez ce qui fait que c'est la façon correcte de rétablir une série de révisions.
Documentation
1 votes
Git revert <commit> ne fonctionne pas ?
9 votes
Comme indiqué dans ma question, cela ne m'aide pas vraiment si je veux revenir à quelque chose qui date de 20 commits.
8 votes
La réponse à cette question a été très bien faite ici stackoverflow.com/questions/4114095/
6 votes
Ce que vous entendez par "rolling back" n'est pas clair. Est-ce que cela signifie que vous voulez basculer temporairement votre copie de travail vers une révision particulière ? Ou que vous voulez rétablir de façon permanente l'historique de votre référentiel à une certaine révision ?
2 votes
Vous devriez accepter une réponse, et éventuellement voter pour les autres réponses qui vous plaisent.
0 votes
En rapport : Revenir à un commit précédent dans le repo Git . Notez que cette question n'a pas la contrainte que le repo est public.