Comment puis-je restaurer un repository github en un commit spécifique?

Mon github a 100 commits en ce moment. Je dois restaurer le référentiel pour valider 80 et supprimer tous les suivants.

Pourquoi? Ce repo est supposé servir à fusionner des utilisateurs divers. Un tas de fusions ont été commises de la part de moi, en raison de modifications excessives. Cela était dû à un étiquetage erroné de mes twigs distantes, où 3 développeurs étaient étiquetés les uns les autres. Je dois revenir à ce point, puis avancer.

Je voulais me rebaser, comme dans cet exemple: Comment puis-je supprimer un commit sur GitHub?

Cependant, git veut que je fasse beaucoup de gestion des conflits. Y a-t-il un moyen plus simple?

git reset --hard  git push -f   

Remarque: Comme indiqué dans les commentaires ci-dessous, l’ utilisation de cette fonctionnalité est dangereuse dans un environnement collaboratif: vous réécrivez l’historique

Autrement:

Examinez la twig que vous souhaitez rétablir, puis réinitialisez votre copie de travail locale sur le commit que vous souhaitez voir être le dernier sur le serveur distant (tout ce qui suit sera envoyé). Pour ce faire, dans SourceTree, j’ai cliqué avec le bouton droit de la souris et sélectionné “Réinitialiser BRANCHNAME à ce commit”.

Ensuite, accédez au répertoire local de votre référentiel et exécutez cette commande:

git -c diff.mnemonicprefix = false -c core.quotepath = false push -v -f –tags REPOSITORY_NAME BRANCHNAME: BRANCHNAME

Cela effacera tous les commits après le courant dans votre repository local, mais seulement pour cette twig.

Pour annuler le dernier engagement, je le fais:

Premier:

 git log 

récupère le dernier identifiant SHA.

 git revert SHA 

Cela créera un nouveau commit qui fera exactement le contraire de votre commit. Ensuite, vous pouvez pousser ce nouvel engagement pour amener votre application à l’état dans lequel elle se trouvait auparavant, et votre historique Git affichera ces modifications en conséquence.

C’est bon pour une refonte immédiate de quelque chose que vous venez de commettre, ce que je trouve plus souvent le cas pour moi.

Comme Mike l’a dit, vous pouvez aussi faire ceci:

 git revert HEAD 

Lorsque vous effectuez des mises à jour de twig à partir de master, je remarque que je clique parfois, et que la twig fusionne également avec le maître. J’ai trouvé un moyen de défaire ça.

Si votre dernier commit était une fusion, un peu plus d’amour est nécessaire:

git reviens -m 1 HEAD