Viac na
Vyhľadanie a obnovenie odstráneného súboru v úložisku Git
Povedzme, že som v úložisku Git. Odstránim súbor a odovzdám túto zmenu. Pokračujem v práci a urobím ďalšie revízie. Potom zistím, že ten súbor potrebujem obnoviť.
Viem, že môžem súbor vymazať pomocou príkazu git checkout HEAD^ foo.bar
, ale v skutočnosti neviem, kedy bol tento súbor vymazaný.
- Aký by bol najrýchlejší spôsob, ako nájsť revíziu, ktorá vymazala daný názov súboru?
- Aký by bol najjednoduchší spôsob, ako dostať tento súbor späť do mojej pracovnej kópie?
Dúfam'e, že nebudem musieť ručne prechádzať svoje protokoly, kontrolovať celý projekt pre daný SHA a potom ručne kopírovať tento súbor do svojej pôvodnej kontroly projektu.
2703
3
Nájsť poslednú revíziu, ktorá ovplyvnila zadanú cestu. Keďže súbor nie je v revízii HEAD, táto revízia ho musela odstrániť.
git log --diff-filter=D --summary
získate všetky revízie, v ktorých boli odstránené súbory, a odstránené súbory;git checkout $commit~1 path/to/file.ext
na obnovenie odstráneného súboru.Kde
$commit
je hodnota revízie, ktorú ste'našli v kroku 1, napr.e4cf499627
.Ak ste blázon, použite
git-bisect
. Tu'je, čo treba urobiť:Teraz je'čas spustiť automatizovaný test. Príkaz shellu
'[ -e foo.bar ]'
vráti 0, akfoo.bar
existuje, a 1 v opačnom prípade. Príkaz "run" príkazugit-bisect
použije binárne vyhľadávanie na automatické nájdenie prvej revízie, v ktorej test zlyhal. Začne v polovici zadaného rozsahu (od dobrého po zlý) a na základe výsledku zadaného testu ho rozdelí na polovicu.Teraz ste'na revízii, ktorá ju odstránila. Odtiaľto môžete skočiť späť do budúcnosti a použiť
git-revert
na zrušenie zmeny,alebo sa môžete vrátiť o jednu revíziu späť a ručne skontrolovať poškodenie: