validées - git supprimer un fichier de l'index




Annuler les modifications de copie de travail d'un fichier dans Git? (8)

Cette réponse est pour la commande nécessaire pour les changements locaux undoign qui sont dans plusieurs fichiers spécifiques dans un même dossier ou plusieurs (ou répertoires). Cette réponse répond spécifiquement aux questions où un utilisateur a plus d'un fichier mais l'utilisateur ne veut pas annuler toutes les modifications locales:

si vous avez un ou plusieurs fichiers, vous pouvez appliquer la commande samne ( git checkout -- file ) à chacun de ces fichiers en listant chacun de leur emplacement séparé par un espace comme dans:

git checkout -- name1/name2/fileOne.ext nameA/subFolder/fileTwo.ext

attention à l'espace qui existe entre name1 / nom2 / fileOne.ext nomA / sous-dossier / fichierTwo.ext

Pour plusieurs fichiers dans le même dossier:

S'il vous arrive d'annuler les modifications pour tous les fichiers d'un répertoire donné, utilisez la commande git comme suit:

git checkout -- name1/name2/*

L'astérisque ci-dessus fait l'affaire de défaire tous les fichiers à cet endroit sous name1 / name2.

De même, les éléments suivants peuvent annuler les modifications dans tous les fichiers de plusieurs dossiers:

git checkout -- name1/name2/* nameA/subFolder/*

encore une fois l'espace entre name1 / name2 / * nomA / sous-dossier / * dans l'esprit ci-dessus.

Remarque: nom1, nom2, nomA, sous-dossier: tous ces exemples de dossiers indiquent le dossier ou le package dans lequel le (s) fichier (s) en question peut résider.

Après la dernière validation, j'ai modifié un tas de fichiers dans ma copie de travail, mais je veux annuler les modifications apportées à l'un de ces fichiers, par exemple en le réinitialisant au même état que le commit le plus récent.

Cependant, je veux seulement annuler les changements de copie de travail de ce seul fichier seul, rien d'autre avec cela.

Comment je fais ça?


Je restaure mes fichiers en utilisant l'identifiant SHA, ce que je fais est git checkout <sha hash id> <file name>


Juste utiliser

git checkout filename

Cela remplacera le nom de fichier par la dernière version de la branche actuelle.

ATTENTION: vos modifications seront ignorées - aucune sauvegarde n'est conservée.


Pour moi seulement celui-ci a travaillé

git checkout -p filename


Si votre fichier est déjà mis en scène (se produit lorsque vous faites un git add etc après que le fichier a été édité) pour annuler vos modifications.

Utilisation

git reset HEAD <file>

alors

git checkout <file>

Si ce n'est déjà fait, utilisez simplement

git checkout <file>

Si vous n'avez pas encore poussé ou partagé votre commit:

git diff --stat HEAD^...HEAD | \
fgrep filename_snippet_to_revert | cut -d' ' -f2 | xargs git checkout HEAD^ --
git commit -a --amend

Vous pouvez utiliser

git checkout -- file

Vous pouvez le faire sans le -- (comme suggéré par nimrodm), mais si le nom de fichier ressemble à une branche ou une balise (ou un autre identificateur de révision), il peut être confus, donc l'utilisation -- est la meilleure.

Vous pouvez également extraire une version particulière d'un fichier:

git checkout v1.2.3 -- file         # tag v1.2.3
git checkout stable -- file         # stable branch
git checkout origin/master -- file  # upstream master
git checkout HEAD -- file           # the version from the most recent commit
git checkout HEAD^ -- file          # the version before the most recent commit

J'ai fait par git bash:

(use "git checkout -- <file>..." to discard changes in working directory)

  1. Statut Git. [Nous avons donc vu un fichier modifié.]
  2. git checkout - index.html [j'ai changé dans le fichier index.html:
  3. git status [maintenant ces changements ont été supprimés]







undo