Co Linus oznaczało, kiedy powiedział, że Git zapewnia, że pliki nie są uszkodzone, miał na myśli to, że jeśli odnoszą się do konkretnego commit (identyfikowanego przez hash), jesteś gwarantowana że będzie zawsze odnoszą się do dokładnie tego samego stanu repozytorium. Jeśli i wyciągniesz jądro Linuksa z drzewa Linusa, a on odwołuje się do jakiegoś commit ae6bcd1 ..., nie ma nic, co możesz zrobić (nawet w lokalnym repozytorium), aby kiedykolwiek popełnić commit ae6bcd1 ... wyglądać inaczej niż Zauważ, że Linus patrzy, kiedy to mówi.
Co więcej, ponieważ obiekt commit zawiera odniesienia do (wszystkich) jego zatwierdzeń dla rodziców, gdy odwołujesz się do zatwierdzenia, gwarantujesz także jego pełną historię w DAG.
Jeśli chodzi o uszkodzenie plików, jest to rodzaj niezależnego problemu; ale bez uszkodzenia rzeczywistych obiektów typu blob (np. gg/objects/ob/ject_hashname), jeśli jeden z twoich plików drzewa roboczego zostanie uszkodzony, będzie można przywrócić z poprzedniego stanu zatwierdzenia lub ze stanu indeksu/pamięci podręcznej.
W takim przypadku nigdy nie będziesz w stanie uszkodzić pilota, chyba że wykonujesz wymuszone naciśnięcia (które nadpisują historię na pilocie), ponieważ funkcja push zapewnia, że obiekty zatwierdzenia tworzą ciągły wykres historii.
Co się stanie, jeśli starają się wcisnąć na pilocie? Zanim zauważysz korupcję, czy to również psuje zdalnika lub narzeka? –
Przesyłanie do pilota oznacza spakowanie wszystkich plików razem, a odbiornik (do którego naciskasz) musi ponownie przeliczyć SHA1 wszystkich plików. Więc jeśli jakiś plik był uszkodzony, identyfikatory obiektów na drzewach zaczynałyby się niedopasować i pojawiałaby się korupcja - i zawsze możesz cofnąć się do miejsca, w którym byłeś wcześniej i zrobić fuksa git, aby znaleźć problemy po twojej stronie . – araqnid
Wreszcie pliki obiektów są niezmienne, więc po ich zapisaniu nigdy nie zmieniają ich zawartości. Jedyną operacją, która ma miejsce, jest przepakowanie, więc nie można uszkodzić pilota przez naciśnięcie, ponieważ nie napisze innej kopii pliku, który już posiada. –