Jeg har foretaget nogle ændringer i en fil, som er blevet bekræftet et par gange som en del af en gruppe af filer, men nu ønsker jeg at nulstille/tilbageføre ændringerne i den til en tidligere version.
Jeg har lavet en git log
sammen med en git diff
for at finde den revision jeg har brug for, men jeg har bare ingen idé om hvordan jeg får filen tilbage til dens tidligere tilstand i fortiden.
git checkout -- foo
Det vil nulstille foo
til HEAD. Du kan også:
git checkout HEAD^ foo
for en revision tilbage, osv.
Sjovt nok vil git checkout foo
ikke virke, hvis arbejdskopien ligger i en mappe med navnet foo
; men både git checkout HEAD foo
og git checkout ./foo
vil virke:
$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
Bemærk dog, at git checkout ./foo
og git checkout HEAD ./foo
ikke er nøjagtigt det samme; et eksempel herpå:
$ 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
(Den anden add
sætter filen i indexet, men den får ikke filen
commit.)
Git checkout ./foo
betyder at tilbageføre stien ./foo
fra index;
tilføjelse af HEAD
instruerer Git til at tilbageføre denne sti i indekset til dens
HEAD
-revision, før du gør det.