Git - sposób przechowywania zmian (kopie czy info o zmianach)

0

Witam,
uczę się właśnie Git-a z tej strony: https://git-scm.com/book/pl/v1/Pierwsze-kroki-Podstawy-Git i mam takie pytanie:
W jaki sposób Git przechowuje zmiany w plikach? Czy jeśli zrobię zmianę w pliku to czy Git stworzy mi drugi plik, który będzie przechowywał wszystkie dane w tym te zmienione? Tzn. większość rzeczy może być zdublowana z poprzednią wersją pliku? Czy może zapisuje tylko informacje o zmianach?
Z artykułu, do którego link podałem wyżej, chyba wynika, że tworzy kolejny plik - który zawiera zarówno zmiany jak również wszystko inne.

Z góry dzięki za wyjaśnienie.

1

Czy jeśli zrobię zmianę w pliku to czy Git stworzy mi drugi plik, który będzie przechowywał wszystkie dane w tym te zmienione? Tzn. większość rzeczy może być zdublowana z poprzednią wersją pliku? Czy może zapisuje tylko informacje o zmianach?

Git przechowuje dane dość wydajnie, tak że nawet wielkie projekty z długą historią commitów zajmują zaskakująco mało.

Dokładny format przechowywania danych wewnątrz repo nie jest istotny, i może się przecież zmieniać z wersji na wersję.

0

Git używa migawek plików, czyli zapamiętuje stan plików po każdej zmianie. Tworzy stan wszystkich plików projektu z każdej zmiany na dowolnym pliku projektu (zapamiętuje zmiany w plikach i linki do plików, które się nie zmieniły), czyli dla każdej zmiany na pliku posiada stan innych plików w tym momencie.

Przykład
Jeśli plik A zmieni się, a B nie, to git zapisze stan pliku A po zmianie (posiada teraz stan przed zmianą i po zmianie, na dysku zapewne zajmuje to tyle, ile wynosi różnica dokonanych zmian)
oraz link do ostatniej zmiany/stanu pliku B (nie zajmuje dodatkowego miejsca na dysku).

Kluczowy cytat z https://git-scm.com/book/pl/v1/Pierwsze-kroki-Podstawy-Git

„Za każdym razem jak tworzysz commit lub zapisujesz stan projektu, Git tworzy obraz przedstawiający to jak wyglądają wszystkie pliki w danym momencie i przechowuje referencję do tej migawki. W celu uzyskania dobrej wydajności, jeśli dany plik nie został zmieniony, Git nie zapisuje ponownie tego pliku, a tylko referencję do jego poprzedniej, identycznej wersji, która jest już zapisana”

I wizualizacja:
https://git-scm.com/figures/18333fig0105-tn.png

[Adam W.]

0

Git przechowuje całe pliki, nie konkretne różnice. M. in. dzięki temu jest taki szybki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1