1
votes

git - Comment annuler les modifications d'un fichier validé localement

J'ai suivi, tout en étant sur ma BranchA locale:

  1. Modifier FileA (par erreur)
  2. git add FileA
  3. git commit -m "FichierA modifié"

Donc, FileA est dans mon commit local (jamais poussé vers distant) sur ma branche locale BranchA (également jamais poussé vers distant).

Comment annuler les modifications apportées à FileA?

MISE À JOUR ET COMMENT JE LE RÉSOLU

J'ai annulé les modifications apportées à FileA depuis SourceTree au lieu de git car j'ai réalisé que c'était plus simple pour moi.

Pour ce faire, dans SourceTree, r-c sur le fichier commité FileA> "Log Select ..."> sélectionnez le commit précédent (celui qui précède le vôtre)> r-c dessus et choisissez "Reset to this commit". Cela a fait le travail mais merci à tous


4 Réponses :


1
votes

Vous pouvez réinitialiser l'index de la branche actuelle au commit précédent avec git reset HEAD ~ 1 . Ajoutez --hard pour réinitialiser votre répertoire de travail, ou laissez-le désactivé si vous souhaitez affiner les modifications et recommencer.

Si vous avez d'autres modifications que vous avez apportées depuis lors, utilisez git rebase pour déplacer d'abord votre commit incriminé en haut de la pile.


2 commentaires

Mais je veux seulement que ce fichier soit annulé, pas tout le commit. J'ai FileA, FileB, FileC dans ce commit, je veux que seul FileA soit rétabli à la version avant ma modification


Alors laissez de côté le --hard, vous pouvez donc affiner (git checkout - FileA) et recommencer.



7
votes

Pour annuler spécifiquement les modifications apportées à ce fichier mais garder le commit inchangé sinon:

1) Rétablissez le fichierA à son état précédent

git commit --amend

2) Incluez cela dans le dernier commit que vous avez fait sur BranchA

git checkout HEAD^ -- path/to/fileA

(Et comme il n'a pas encore été poussé, pas besoin de pousser avec forcer la prochaine fois.)


2 commentaires

Parce que git checkout HEAD ^ - path / to / fileA écrit d'abord le fichier dans l'index, puis dans l'arbre de travail, vous n'avez en fait pas besoin de git add étape ici. Mais c'est par ailleurs le jeu de commandes Git le plus court (et probablement le meilleur) à utiliser; voté ...


Merci, j'accepte votre réponse mais je n'ai pas eu la chance d'essayer puisque je l'ai fait à partir de SourceTree à la place. Dans SourceTree, r-c sur le fichier validé> Log Select ...> sélectionnez le commit précédent (celui qui précède le vôtre)> r-c dessus et choisissez "Reset to this commit". Cela a fait le travail mais merci à tous



2
votes

Commencez par réinitialiser votre branche sur le commit précédent:

git add files...
git commit -m "message"

Ensuite, vous pouvez utiliser checkout pour réinitialiser des fichiers spécifiques à l'ancien état:

XXX

Une fois que vous avez fait cela, vous pouvez valider à nouveau vos modifications:

git checkout -- files...


0 commentaires

1
votes

Une autre façon de le faire (je suppose que votre commit a des changements uniquement dans les fichiers, vous voulez les supprimer):

Être dans votre BranchA

git rebase -i HEAD~2

une liste de deux commits, triés historiquement asc. Le dernier est ce que vous aimeriez changer. Donc, vous voulez annuler ce commit. Déplacez le curseur sur le deuxième commit et au lieu de pick tapez drop , ou simplement d.

Enregistrez vos modifications ( dépend de votre éditeur, cela peut être CTRL + X + SHIFT + Y pour nano code> ou : wq pour vim , et c'est tout.


0 commentaires