Jeg har gjort noen endringer i en fil som har blitt overført flere ganger som en del av en gruppe filer, men ønsker nå å tilbakestille/tilbakeføre endringene til en tidligere versjon.
Jeg har gjort en git log
sammen med en git diff
for å finne revisjonen jeg trenger, men aner ikke hvordan jeg skal få filen tilbake til sin tidligere tilstand.
git checkout -- foo
Det vil tilbakestille foo
til HEAD. Du kan også gjøre det:
git checkout HEAD^ foo
for én revisjon tilbake, osv.
Pussig nok vil git checkout foo
ikke fungere hvis arbeidskopien ligger i en katalog som heter foo
; men både git checkout HEAD foo
og git checkout ./foo
vil fungere:
$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
Merk imidlertid at git checkout ./foo
og git checkout HEAD ./foo
ikke er eksakt det samme.
ikke er nøyaktig det samme; et godt eksempel:
$ 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 andre add
legger til filen i indeksen, men den blir ikke overført.
committed).
Git checkout ./foo
betyr å tilbakeføre banen ./foo
fra indeksen;
Hvis du legger til HEAD
, instruerer du Git om å tilbakestille denne banen i indeksen til dens
HEAD
-revisjonen før du gjør det.