Question Réinitialisation matérielle d'un seul fichier


J'ai actuellement trois fichiers modifiés dans mon répertoire de travail. Cependant, je veux que l'un d'entre eux soit réinitialisé au statut HEAD.

Dans SVN j'utiliserais svn revert <filename> (suivi par svn update <filename> si nécessaire) mais en git je devrais utiliser git reset --hard. Cependant, cette commande ne peut pas fonctionner sur un seul fichier.

Existe-t-il un moyen de supprimer un seul fichier de modifications et de l'écraser avec une nouvelle copie HEAD?


598
2017-08-22 12:12


origine


Réponses:


Vous pouvez utiliser la commande suivante:

git checkout HEAD -- my-file.txt

... qui mettra à jour à la fois la copie de travail de my-file.txt et son état dans l'index avec celui de HEAD.

-- signifie essentiellement: traiter chaque argument après ce point comme un nom de fichier. Plus de détails dans cette réponse. Grâce à VonC pour le signaler.


1075
2017-08-22 12:16



Réinitialiser à la tête:

Pour réinitialiser un seul fichier à HEAD:

git checkout @ -- myfile.ext

Notez que @ est court pour HEAD. Une ancienne version de git peut ne pas supporter le format court.

Réinitialiser à l'index:

Pour réinitialiser un seul fichier à la indice, en supposant que l'index est non vide, sinon à HEAD:

git checkout -- myfile.ext

Le fait est que pour être en sécurité, vous ne voulez pas laisser de côté @ ou HEAD à partir de la commande, sauf si vous voulez spécifiquement réinitialiser l'index uniquement.


60
2017-12-03 07:39



vous pouvez utiliser la commande ci-dessous pour réinitialiser un seul fichier

git checkout HEAD -- path_to_file/file_name

Liste tous les fichiers modifiés pour obtenir path_to_file/filename avec la commande ci-dessous

git status

0
2018-03-26 05:48