Comment puis-je réinitialiser ou rétablir un fichier à une révision spécifique ?

J'ai apporté quelques modifications à un fichier qui a été validé plusieurs fois dans le cadre d'un groupe de fichiers, mais je souhaite maintenant réinitialiser/rétablir les modifications sur ce fichier à une version antérieure.

J'ai fait un git log ainsi qu'un git diff pour trouver la révision dont j'ai besoin, mais je n'ai aucune idée de la façon de ramener le fichier à son état antérieur.

git checkout -- foo

Cela remettra foo à HEAD. Vous pouvez aussi :

git checkout HEAD^ foo

pour une révision en arrière, etc.

Commentaires (4)

Curieusement, git checkout foo ne fonctionnera pas si la copie de travail est dans un répertoire nommé foo ; cependant, git checkout HEAD foo et git checkout ./foo le feront :

$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D   foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
Commentaires (1)

Notez, cependant, que git checkout ./foo et git checkout HEAD ./foo ne sont pas exactement la même chose ; exemple concret :

$ echo A > foo
$ git add foo
$ git commit -m 'A' foo
Created commit a1f085f: A
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
$ echo B >> foo
$ git add foo
$ echo C >> foo
$ cat foo
A
B
C
$ git checkout ./foo
$ cat foo
A
B
$ git checkout HEAD ./foo
$ cat foo
A

(Le second add met en scène le fichier dans l'index, mais il n'est pas livré). commis).

Git checkout ./foo signifie rétablir le chemin ./foo de l'index** ; L'ajout de HEAD indique à Git de rétablir ce chemin dans l'index à sa révision HEAD avant de le faire. révision HEAD avant de le faire.

Commentaires (0)