Käsu git revert abil saad taastada mingit eelmist seisu repos. Selleks tehakse uus commit vajalike muudatustega.
Vaatame käsuga git log, millised on viimased commit-id ühes väljamõeldud repos:
~/desktop/joonas/git-test $ git log
commit 573ce310df9006d52937f43b9ecc07a056bbbeb4 (HEAD -> master)
Author: Joonas Leemet <jleeme@taltech.ee>
Date: Wed Sep 20 08:55:07 2023 +0300
fourth commit
commit 312186fbdcc60cf74d0e5708a08b92f20f1800ba
Author: Joonas Leemet <jleeme@taltech.ee>
Date: Wed Sep 20 08:54:25 2023 +0300
third commit
commit c779d8f5c55975c9950c282f0240e281e1c3a2ac
Author: Joonas Leemet <jleeme@taltech.ee>
Date: Wed Sep 20 08:52:40 2023 +0300
second commit
commit 7048382352365480552f621218eaeb9e09a9a24f
Author: Joonas Leemet <jleeme@taltech.ee>
Date: Wed Sep 20 08:52:12 2023 +0300
first commit
Leia commit hash, mida soovid taastada. Sisesta terminali git revert käsk, ning järgmise argumendina lisagi valitud commit hash.
~/desktop/joonas/git-test $ git revert 573ce310df9006d52937f43b9ecc07a056bbbeb4
Nüüd avatakse failiredaktor, kus saate lisada commit message-i...
Kui kasutate nano-t, siis vajutage CTRL+O ning ENTER et salvestada see commit message.
Kui kasutate vim-i, siis kirjutage :wq, et salvestada. (NB! Vim ei ole väga kasutajasõbralik ning on uustulnukile üsna raske. Seega soovitame muuta failiredaktorit mida git kasutab järgneva käsuga: git config --global core.editor nano)
Juhul, kui commit message faili redigeerimine ebaõnnestus, saate teha tavalise git commit käsu, et git revert käsu poolt tehtud muudatused commitida.
Ning nüüd, kui vaadata git log-i, on näha, et on ilmunud uus, viies commit, mis taastas palutud seisu.
~/desktop/joonas/git-test $ git log
commit 6266437fa64c1f2b5d9236b62174497b85254bf8 (HEAD -> master)
Author: Joonas Leemet <jleeme@taltech.ee>
Date: Wed Sep 20 09:01:18 2023 +0300
Revert "fourth commit"
This reverts commit 573ce310df9006d52937f43b9ecc07a056bbbeb4.
commit 573ce310df9006d52937f43b9ecc07a056bbbeb4
Author: Joonas Leemet <jleeme@taltech.ee>
Date: Wed Sep 20 08:55:07 2023 +0300
fourth commit
[...]
Käsu git reset eesmärk on samuti taastada eelnevat seisu repos, kuid siinkohal tegeletakse kohalike muudatustega. Seda käsku ei tohiks kasutada, kui oled oma muutused juba avalikuks teinud ehk git push-inud, sest antud käsk võib kustutada commit-i täielikult logidest, mis tekitab git-il segadusi, kui üritada teiste kasutajatega sünkroniseerida seda 'mäluauku'. [14]
git reset
Faile ei muudeta, kuid stage-itud ehk git add-iga "ettevalmistatud" failid eemaldatakse järjekorrast.
git reset [filename / folder]
Teeb sama, mida eelnev käskki teeb, kuid vaid konkreetsele failile või kaustale.
git reset --hard
Failid muudetakse tagasi selles olekusse, nagu nad viimases commit-is olid. Muutused, mille kallal töötasid, kaotatakse. Samuti tühjeneb ka "ettevalmistatud failide järjekord" ehk git add-iga stage-itud failid.
git reset --soft [commit hash]
Faile ei muudeta, samuti ei kao stage-itud failide järjekord. Kuid commit-id, mis pärast käsus täpsustatud commit-i tehti, kustutatakse igavesti.