Réinitialisation à distance d’un certain commit

Je veux supprimer toutes les modifications effectuées après la validation . Donc j’ai fait:

 git reset --hard  

Maintenant, je veux faire la même chose avec ma télécommande. Comment puis-je faire ceci? J’ai fait des commits (et des push) après et je veux juste les supprimer tous. Est-ce que quelque chose s’est terriblement mal passé et je ne veux pas le rendre pire qu’il ne l’est déjà. ; (

Je veux essentiellement rembobiner mon origin/master en

En supposant que votre twig s’appelle master fois ici et à distance, et que votre télécommande s’appelle origin vous pouvez faire:

  git reset --hard  git push -f origin master 

Cependant, vous devriez éviter de le faire si quelqu’un d’autre travaille avec votre référentiel distant et a modifié vos modifications. Dans ce cas, il serait préférable de rétablir les commits que vous ne voulez pas, puis de pousser comme d’habitude.

Mise à jour: vous avez expliqué ci-dessous que d’autres personnes ont modifié les modifications que vous avez apscopes, il est donc préférable de créer une nouvelle validation qui annule toutes ces modifications . Il y a une bonne explication de vos options pour y parvenir dans cette réponse de Jakub Narębski . La méthode la plus pratique dépend du nombre d’engagements que vous souhaitez rétablir et de la méthode qui vous convient le mieux.

Puisque de votre question, il est clair que vous avez déjà utilisé git reset --hard pour réinitialiser votre twig principale, vous devrez peut-être commencer par utiliser git reset --hard ORIG_HEAD pour git reset --hard ORIG_HEAD votre twig là où elle était auparavant. (Comme toujours avec git reset --hard , assurez-vous que l’ git status est propre, que vous êtes sur la bonne twig et que vous connaissez git reflog comme un outil pour récupérer des commits apparemment perdus.) ORIG_HEAD pointe vers le bon commit, avec git show ORIG_HEAD .

Utilisez les autres réponses si cela ne vous dérange pas de perdre des modifications locales. Cette méthode peut toujours détruire votre télécommande si vous choisissez le mauvais hachage de validation pour revenir à.

Si vous voulez simplement faire de la correspondance distante un commit déjà présent dans votre twig locale:

  1. Ne pas faire de réinitialisation.
  2. Utilisez git log pour trouver le hachage de la validation à laquelle vous souhaitez que la télécommande soit. git log -p pour voir les changements, ou git log --graph --all --oneline --decorate pour voir un arbre compact. (Avoir ce dernier comme alias dans votre shell est très pratique.)
  3. Copiez le hash.
  4. Exécuter une commande comme:

     git push --force  : 

    par exemple

     git push --force origin 606fdfaa33af1844c86f4267a136d4666e576cdc:master 

J’ai résolu le problème comme le vôtre avec ces commandes:

 git reset --hard  git push -f  : 

Mes deux cents aux réponses précédentes: si

 git push --force  : 

ne fonctionne toujours pas, vous pouvez éditer la section de réception de votre fichier .git/config :

 [receive] #denyNonFastforwards = true denyNonFastforwards = false 

Si vous voulez une version précédente du fichier, je vous recommande d’utiliser git checkout.

 git checkout  

Faire cela vous renverra dans le temps, cela n’affecte pas l’état actuel de votre projet, vous pouvez venir sur la ligne principale

mais lorsque vous ajoutez un fichier dans l’argument, ce dernier vous est renvoyé de l’heure précédente à l’heure actuelle de votre projet, c’est-à-dire que votre projet actuel est modifié et doit être validé.

 git checkout  -- file_name git add . git commit -m 'file brought from previous time' git push 

L’avantage de ceci est qu’il ne supprime pas l’historique, et qu’aucun ne modifie un changement de code particulier (git revert)

Vérifiez plus ici https://www.atlassian.com/git/tutorials/undoing-changes#git-checkout

Faites une chose, obtenez le SHA no du commit. comme 87c9808 et puis,

  1. bouge toi-même, c’est ta tête pour le commit spécifié (en faisant git reset –hard 89cef43 // mentionne ton numéro ici)
  2. Ensuite, faites quelques changements dans un fichier aléatoire, de sorte que le git vous demande de le valider localement, puis à distance. Ainsi, ce que vous devez faire maintenant est. après avoir appliqué le changement git commit -a -m “sortingal commit”
  3. Poussez maintenant le commit suivant (si cela a été commis localement) par git push origin master
  4. Maintenant ce que git demandera de vous est que

error: omission de pousser des références vers ‘ https://github.com/YOURREPOSITORY/AndroidExperiments.git ‘ conseil: les mises à jour ont été rejetées car la pointe de votre twig actuelle est derrière le conseil: son homologue distant. Intégrez les modifications à distance (par exemple, le conseil: ‘git pull …’) avant de pousser à nouveau. **

  1. Donc maintenant ce que vous pouvez faire est

git push --force origin master

  1. Et donc, j’espère que ça marche 🙂

Sur GitLab, vous devrez peut-être définir votre twig comme étant non protégée avant de le faire. Vous pouvez le faire dans [repo]> Settings> Repository> Protected Branches. Ensuite, la méthode de la réponse de Mark fonctionne.

 git reset --hard  git push -f origin master 

Section Apprendre: Annuler les commits publics avec le blog Atlasssian https://www.atlassian.com/git/tutorials/resetting-checking-out-and-reverting

Si votre twig n’est pas un développement ou une production, la manière la plus simple d’y parvenir est de réinitialiser localement un certain commit et de créer une nouvelle twig à partir de là. Vous pouvez utiliser:

Git Checkout 000000

(où 000000 est l’identifiant de validation où vous voulez aller) dans votre twig problématique, puis créez simplement une nouvelle twig:

git remote add [nom_de_votre_remote]

Ensuite, vous pouvez créer un nouveau PR et tout va bien fonctionner!