Ik heb enkele wijzigingen aangebracht in een bestand dat al een paar keer is vastgelegd als onderdeel van een groep bestanden, maar nu wil ik de wijzigingen terugzetten naar een eerdere versie.
Ik heb een git log
gedaan samen met een git diff
om de revisie te vinden die ik nodig heb, maar ik heb geen idee hoe ik het bestand terug kan krijgen naar zijn vorige staat.
git checkout -- foo
Dat zal foo
terugzetten naar HEAD. Je kunt ook:
git checkout HEAD^ foo
voor één revisie terug, etc.
Grappig genoeg zal git checkout foo
niet werken als de werkkopie in een map met de naam foo
staat; maar zowel git checkout HEAD foo
als git checkout ./foo
wel:
$ pwd
/Users/aaron/Documents/work/foo
$ git checkout foo
D foo
Already on "foo"
$ git checkout ./foo
$ git checkout HEAD foo
Merk echter op dat git checkout ./foo
en git checkout HEAD ./foo
niet precies hetzelfde zijn; voorbeeld:
$ 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
(De tweede add
plaatst het bestand in de index, maar het wordt niet
vastgelegd).
Git checkout ./foo
betekent terugzetten pad ./foo
uit de index;
Het toevoegen van HEAD
instrueert Git om dat pad in de index terug te zetten naar de
HEAD
revisie terug te zetten voordat je dat doet.