GitHub - Comment faire pour annuler les modifications apportées à l'état précédent
J'utilise GitHub comme mon dépôt distant.
J'ai déjà poussé 5 s'engage pour le serveur et souhaitez revenir à l'état avant la ces s'engage.
Si la validation de hachage est 3425661dba2aadccdbab
, comment puis-je revenir l'ensemble du local/télécommande à qui s'engagent? J'ai essayé
$ reset --hard 3425661dba2aadccdbab
mais qui ne se réinitialise mon travail à la tête de cette branche et m'oblige à faire un git pull
de nouveau. J'ai essayé la caisse, mais cela m'a fait atterrir dans un "isolé" de la branche.
- Est-ce à besoin de l'github tag? Il ne semble pas être github spécifiques.
Vous devez vous connecter pour publier un commentaire.
En gros, vous avez deux options pour annuler les modifications apportées:
La première option peut être obtenue en utilisant
git revert
Un exemple serait
git revert -n HEAD~5..HEAD
. Cette commande permet de créer 5 nouvelles s'engage, chaque de ce qui annule l'un des 5 dernières validations de l'extrait de la branche.La deuxième option serait de supprimer réellement les commits. Notez que cela change histoire dans le référentiel. Si quelqu'un qui a déjà tirer les changements vont probablement être plutôt surpris et les choses peuvent déraper rapidement. Cela dit, vous pouvez faire
La première commande pour effacer toutes les modifications non validées dans votre copie de travail actuelle. et réinitialiser votre dépôt local pour l'etat de l'actuel CHEF - 5 s'engage. La deuxième commande de force de pousser à la distance par défaut (c'est à dire GitHub) Il y a, toutes les modifications divergentes à partir de votre référentiel local sont écrasés.
Une note d'avertissement de nouveau: Si vous ne savez pas vraiment ce que vous faites, n'utilisez pas cette option, car elle peut conduire à la perte de données pour vous ou pour les autres, si ne pas faire droit. La première option est plutôt comme il va automatiquement supprimer les modifications, mais sans les effets secondaires désagréables de l'histoire de réécriture.
HEAD
(c'est à dire actuellement la caisse commit) et 5 s'engage avantHEAD
. Legit revert
serait de créer ainsi de revenir s'engage pour les 5 derniers commits. De même, lagit reset
commande déplace la branche courante 5 s'engage en retour. Voir ce post pour une belle explication sur la façon de spécifier relativ s'engage pour les commandes.Faire un
git push -f
. Pas une bonne idée si il y a d'autres personnes utilisant le même repo.Vous pouvez faire
git revert <commit>
à tous les commits qui ont été faites après votre état. (Dans l'ordre inverse pour éviter des conflits.)C'est une méthode propre si il y a d'autres personnes partageant les pensions de titres, mais un peu effortsome. (Vous pouvez automatiser quoique...?)
Faire un git checkout, puis s'engager à la branche que vous souhaitez. Cela fera un nouveau commit avec l'ancien code (de sorte que vous aurez 6 commits).
git checkout HEAD~3
, où 3 est le nombre de validations de retour que vous souhaitez revenir à.Mieux encore, vous pouvez extraire un seul fichier dans l'actuel CHEF:
git checkout 3425661dba2aadccdbab:path/to/file/from/base
Cela permettra de réduire la probabilité de commettre d'autres personnes en colère avec vous tirant la proverbiale tapis sous leurs pieds.
EDIT:
Il y a une question similaire ici:
La caisse vieux de s'engager et d'en faire un nouveau commit