/ / Kann ein Git-Repository beschädigt werden, wenn ein Befehl, der es ändert, abstürzt oder abgebrochen wird? - git, absturz, transaktion

Kann ein Git-Repository beschädigt werden, wenn ein modifizierender Befehl abstürzt oder abgebrochen wird? - Git, Absturz, Transaktion

Beim Spielen mit gitIch probiere manchmal Dinge aus und brach dann Befehle ab, die zu lange dauern (z. B. einige git svn Befehle, die bei Netzwerkproblemen hängen Das brachte mich zum Nachdenken:

Ist es immer sicher, einen Befehl gewaltsam abzubrechen (Strg-C oder kill) Was ist, wenn ein Befehl abstürzt (Speicher, Fehler, Netzwerk / FS-Problem)? Sind Repository-Änderungen "transaktional" in dem Sinne, dass unvollständige Änderungen "zurückgerollt" werden (wie in einem Versionierungsdateisystem)? Oder riskiere ich in diesem Fall eine Repository-Korruption?

Ich bin sicher, die klugen Leute, die an git arbeiten, müssen dies berücksichtigt haben, aber ich konnte keine Informationen im git-Handbuch oder online finden.

Antworten:

9 für die Antwort № 1

Das Repository ist vollständig transaktionsfähig, ja.

Der Arbeitsbaum ist fast transaktional, aber daist ein eckiger Fall, der nicht einfach zu lösen ist. Checkout führt alle erforderlichen Prüfungen durch und schreibt den neuen Inhalt in temporäre Dateien. Während der Zeit wird nichts geändert, wenn Sie ihn unterbrechen. Dann werden die Dateien jedoch in den Baum umbenannt Nach und nach Aktualisierungen des HEAD-Ref. Unterbricht man in dieser Phase, kann es zu teilweisen Änderungen am Baum kommen. Es gibt keine Massenumbenennung, um dies atomar zu tun.