Kā atjaunot vai atgriezt failu uz konkrētu versiju?

Esmu veicis dažas izmaiņas failā, kas ir vairākkārt nodots kā daļa no failu grupas, bet tagad vēlos atjaunot/atgriezt tajā veiktās izmaiņas atpakaļ uz iepriekšējo versiju.

Esmu veicis git log un git diff, lai atrastu vajadzīgo versiju, bet man nav ne jausmas, kā atgriezt failu iepriekšējā stāvoklī.

git checkout -- foo

Tas foo atiestatīs uz HEAD. Jūs varat arī:

git checkout HEAD^ foo

par vienu pārskatīšanu atpakaļ utt.

Komentāri (4)

Interesanti, ka git checkout foo nedarbosies, ja darba kopija atrodas direktorijā ar nosaukumu foo; tomēr gan git checkout HEAD foo, gan git checkout ./foo darbosies:

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

Tomēr ņemiet vērā, ka git checkout ./foo un git checkout HEAD ./foo nav gluži tas pats; piemērs:

$ 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

(Otrais add pakāpj failu indeksā, bet tas *neiegūst nodots.)

Git checkout ./foo nozīmē atgriezt ceļu ./foo no indeksa; pievienojot HEAD, Git dod norādījumu atgriezt šo ceļu indeksā uz tā atrašanās vietu. HEAD revīziju, pirms tas tiek darīts.

Komentāri (0)