/ / Môže byť úložisko git poškodené, ak dôjde k havárii alebo k prerušeniu príkazu na jeho úpravu? - git, crash, transakčné

Môže byť úložisko git poškodené, ak príkaz upravujúci ho zlyhá alebo sa preruší? - git, havárie, transakčné

Pri hraní s git, Niekedy vyskúšam veci a potom zruším príkazy, ktoré trvajú príliš dlho (napr. Niektoré git svn príkazy, ktoré visia počas problémov so sieťou). Toto ma prinútilo premýšľať:

Je vždy bezpečné násilne zrušiť príkaz (Ctrl-C alebo kill)? Čo ak dôjde k zlyhaniu príkazu (nedostatok pamäte, chyba, problém so sieťou / FS)? Sú zmeny úložiska „transakčné“ v tom zmysle, že neúplné zmeny sa „vrátia späť“ (napríklad v súborovom systéme verzovania)? Alebo v takom prípade riskujem poškodenie úložiska?

Som si istý, že inteligentní ľudia pracujúci na gite to museli vziať do úvahy, napriek tomu som v gitovej príručke ani online nenašiel žiadne informácie.

odpovede:

9 pre odpoveď č. 1

Úložisko je úplne transakčné, áno.

Pracovný strom je takmer transakčný, ale existujeje rohový prípad, ktorý sa nedá ľahko vyriešiť. Služba Checkout vykoná všetky potrebné kontroly a zapíše nový obsah do dočasných súborov a v priebehu času sa nič nezmení, ak ho prerušíte. Potom sa však súbory premenujú na strom. jeden po druhom a nakoniec aktualizuje HEAD odkaz a prerušenie v tejto fáze vás môže nechať s čiastočnými zmenami v strome. Neexistuje žiadne hromadné premenovanie, ktoré by to umožňovalo atómovo.