Comment puis-je faire reculer un dépôt github vers une propagation spécifique?

mon github contient 100 commits. J'ai besoin de reprendre le référentiel de commettre 80, et de supprimer tous les suivants.

pourquoi? Ce repo est censé être pour la fusion de divers utilisateurs. Un tas de Fusions est entré comme commits de moi, en raison de l'édition excessive. Cela était dû à une erreur d'étiquetage de mes branches distantes, où 3 développeurs ont été étiquetés comme l'un l'autre. Je dois me remettre à ce point, puis tirer en avant.

I voulu rebaser, comme dans cet exemple: Comment puis-je supprimer un commit sur GitHub?

cependant, git veut que je fasse beaucoup de gestion des conflits. Est-il un moyen plus simple?

351
demandé sur Community 2010-12-07 03:51:00

4 réponses

git reset --hard <old-commit-id>
git push -f <remote-name> <branch-name>

Note: Comme écrit dans les commentaires ci-dessous, utiliser ceci est dangereux dans un environnement collaboratif: vous réécrivez l'histoire

751
répondu jtdubs 2015-11-13 02:00:38

une Autre façon:

Vérifiez la branche que vous voulez revenir en arrière, puis réinitialisez votre copie de travail locale à la propagation que vous voulez être la dernière sur le serveur distant (tout après cela ira bye-bye). Pour ce faire, dans SourceTree j'ai cliqué à droite sur le bouton et sélectionné "Reset BRANCHNAME to this commit".

naviguez ensuite dans le répertoire local de votre dépôt et lancez cette commande:

git-c diff.mnemonicprefix=false -c de base.motepath=false push-v-f --tags REPOITORY_NAME nom de branche: nom de branche

Ceci effacera toutes les propagations après celle en cours dans votre dépôt local, mais seulement pour cette branche.

17
répondu CommaToast 2013-05-13 17:10:48

pour annuler le plus récent je fais ceci:

d'Abord:

git log

récupérez la dernière pièce à défaire.

git revert SHA

qui va créer un nouveau commit qui fait exactement le contraire de votre commit. Ensuite, vous pouvez pousser ce nouveau commit pour amener votre application à l'état où elle était avant, et votre historique git montrera ces changements en conséquence.

c'est bon pour une reprise immédiate de quelque chose tu viens de t'engager, ce qui est plus souvent le cas pour moi.

comme Mike metioned, vous pouvez aussi faire ceci:

git revert HEAD
14
répondu Nick Res 2016-11-05 17:18:10

quand je fais des mises à jour de branche à partir de master, je remarque que je clique parfois trop, et provoque la fusion de la branche dans le master, aussi. Trouvé un moyen d'annuler.

Si votre dernier commit était une fusion, un peu plus d'amour:

git revert -m 1 HEAD

2
répondu Richard Nader 2018-08-12 10:49:20