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.
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
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.