J'ai un projet dans un référentiel distant, synchronisé avec un référentiel local (développement) et un serveur (prod). J'ai apporté des modifications validées déjà poussées vers la télécommande et retirées du serveur. Maintenant, je veux annuler ces modifications. Je pouvais donc juste git checkout
valider la validation avant les modifications et valider les nouvelles modifications, mais je suppose qu'il y aura des problèmes pour les repousser à distance. Une suggestion sur la façon de procéder?
610
Réponses:
Vous pouvez annuler les validations individuelles avec:
Cela va créer un nouveau commit qui annule les modifications du commit que vous avez spécifié. Notez qu'il ne rétablit que cette validation spécifique, et non la validation après cela. Si vous souhaitez annuler une série de validations, vous pouvez le faire comme ceci:
Il annule les validations entre et incluant les validations spécifiées.
Consultez la page de manuel git-revert pour plus d'informations sur la
git revert
commande. Consultez également cette réponse pour plus d'informations sur la restauration des validations.la source
git log
<oldest_commit_hash>
été incluse dans la liste desUne solution qui ne garde aucune trace de "l'annulation".
REMARQUE: ne faites pas cela si quelqu'un a déjà retiré votre monnaie (je n'utiliserais cela que sur mon dépôt personnel)
faire:
cela récupérera toutes les mises à jour localement (donc git status listera tous les fichiers mis à jour)
puis vous "faites votre travail" et réengagez vos modifications (Remarque: cette étape est facultative)
En ce moment, votre arbre local diffère de la télécommande
poussera et forcera la télécommande à considérer cette poussée et à supprimer la précédente (la spécification du nom à distance et du nom de la branche n'est pas obligatoire mais est recommandée pour éviter de mettre à jour toutes les branches avec l'indicateur de mise à jour).
!! attention certaines balises peuvent encore pointer supprimées commit !! comment-supprimer-une-balise distante
la source
git push -f
pour le dernier commit correct et l'historique à distance nettoyé! Merci!Ce que je fais dans ces cas, c'est:
Dans le serveur, ramenez le curseur sur le dernier bon commit connu:
Localement, faites de même:
Voir un exemple complet sur une branche
my_new_branch
que j'ai créée à cet effet:Voici l'histoire récente après avoir ajouté quelques éléments à
myfile.py
:Je veux me débarrasser du dernier commit, qui a déjà été poussé, alors je lance:
Agréable! Maintenant, je vois le fichier qui a été modifié sur ce commit (
myfile.py
) s'affiche dans "non organisé pour la validation":Étant donné que je ne souhaite pas ces modifications, je déplace simplement le curseur localement:
Alors maintenant, HEAD est dans le commit précédent, à la fois local et distant:
la source
Vous pouvez RÉVERVER (ou vous pouvez également l'appeler SUPPRIMER ) le Git Commit à la fois localement et à distance si vous suivez les étapes indiquées ci-dessous via la ligne de commande git.
Exécutez la commande suivante pour voir l'ID de validation que vous souhaitez rétablir
Vous obtiendrez comme une capture d'écran suivante
Si vous vérifiez également à distance (via l'interface Web), vous pouvez voir que ce serait la même chose que ci-dessous
Comme par capture d' écran actuellement vous engager sur id e110322 mais vous voulez revenir à 030bbf6 DEUX LOCALEMENT et à distance .
Effectuez les étapes suivantes pour SUPPRIMER / RÉVERTIR Commit localement + à distance
Première restauration locale pour valider l'ID 030bbf6
suivi par
Ces deux commandes nettoient la réinitialisation de la force pour valider l'étape 030bbf6 comme illustré ci-dessous dans l'instantané
maintenant, si vous exécutez git status, vous verrez que vous êtes DEUX commits DERRIÈRE à partir de la branche distante comme indiqué ci-dessous
Exécutez la commande suivante pour mettre à jour vos index (s'il y a des mises à jour). Il est recommandé de demander à tous les développeurs de n'accepter aucune demande d'extraction sur la branche distante principale.
Une fois que vous avez terminé, vous devez pousser ce commit avec force en utilisant le symbole + devant la branche, comme indiqué ci-dessous. Je l' ai utilisé ici comme maître branche, vous pouvez le remplacer par tout
Code
maintenant, si vous voyez l'interface web de remote, alors commit devrait également être annulé.
la source
Cela supprimera vos commits poussés
la source
Dans la ligne de code ci-dessus. "Le dernier argument représente"
1 - annule une validation.
2 - annule les deux derniers commits.
n - annule les n derniers validations.
Vous devez appuyer sur après cette commande pour prendre effet sur la télécommande. Vous avez d'autres options comme spécifier la plage de validations à annuler. C'est l'une des options.
Utilisation ultérieure
git commit -am "COMMIT_MESSAGE"
alorsgit push
ougit push -f
la source
git revert ref1..ref2
2020 Simple:
(Le hachage du dernier commit que vous souhaitez conserver).
Vous conserverez localement les modifications non validées.
Si vous voulez pousser à nouveau, vous devez faire:
la source
Voici ma voie:
Disons que le nom de la branche est
develop
.la source
Vous pouvez faire quelque chose comme
la source