1776 votes

Comment défaire "git commit --amend" fait au lieu de "git commit" ?

J'ai accidentellement modifié mon précédent commit. Le commit aurait dû être séparé pour conserver l'historique des modifications que j'ai apportées à un fichier particulier.

Y a-t-il un moyen d'annuler cette dernière livraison ? Si je fais quelque chose comme git reset --hard HEAD^ le premier commit est également annulé.

(je n'ai pas encore poussé vers des répertoires distants)

0 votes

si vous voulez confirmer les effets de chacune des étapes que vous avez suivies (soit avant d'essayer les réponses ci-dessous, soit si votre tête commence à tourner pendant l'exécution de l'une d'entre elles) essayez git log --reflog -p -- {{name-of-the-dir-or-file-in-question}} . Il montre à la fois les changements réels et les messages de validation pour chaque action.

3voto

Priyanshu Chauhan Points 2141
  1. Extraction vers la branche temporaire avec le dernier commit

    git branch temp HEAD@{1}

  2. Remise à zéro du dernier commit

    git reset temp

  3. Maintenant, vous aurez tous les fichiers de votre commit ainsi que du commit précédent. Vérifiez le statut de tous les fichiers.

    git status

  4. Réinitialisez vos fichiers commit à partir de git stage.

    git reset myfile1.js (et ainsi de suite)

  5. Rattachez ce commit

    git commit -C HEAD@{1}

  6. Ajoutez et livrez vos fichiers au nouveau commit.

3voto

Vasudeva H Points 21

Une solution simple Solution Travaux donnés : Si votre commit HEAD est en synchronisation avec le commit distant.

  • Créez une branche supplémentaire dans votre espace de travail local, et gardez-la en synchronisation avec votre branche distante.
  • Cherry pick the HEAD commit from the branch (where git commit --amend) was performed onto the newly created branch.

Le commit choisi contiendra seulement vos dernières modifications, pas les anciennes. Vous pouvez maintenant simplement renommer ce commit.

0 votes

Bonne idée, ça a bien marché pour moi. Notez également que vous pouvez utiliser master / main si personne d'autre n'a encore fusionné avec elle. Il m'a sauvé aujourd'hui !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X