Afin d'expliquer le terme snapshot
claire. Permettez-moi de vous présenter les deux autres éléments
- format d'objet libre git
- git Packfiles
Supposons que nous ayons un fichier appelé "a.txt" dont le contenu est constitué de dix lettres 'a' sous le contrôle de git. Après avoir livré ce fichier, trois dossiers seront créés dans le chemin .git/objects et chaque dossier contiendra un fichier. Chaque fichier est S.N.A.P.S.H.O.T .
Chaque dossier contient un fichier
Ahora nous modifions le fichier a.txt pour voir ce qui se passe
Nous avons remplacé la première lettre "a" par la lettre "b".
-->>
Ensuite, il s'est engagé !
Git a créé trois autres nouveaux fichiers dans trois nouveaux dossiers
Ces trois nouveaux dossiers sont également S.N.A.P.S.H.O.Ts
A chaque fois que nous ferons un COMMIT, git enregistrera instantanés sur le disque au lieu du delta entre la nouvelle version et l'ancienne version du même fichier. Même si nous n'avons changé qu'une lettre d'un fichier, git enregistrera le fichier entier sous la forme d'un fichier instantané .
C'est ce qu'on appelle aussi le format d'objet libre .
Dans ce cas, git coûtera plus d'espace disque que les autres vcs. (comme la subversion) qui enregistre le delta entre la nouvelle version et l'ancienne version du même fichier. Mais les avantages de l'utilisation de snapshot
raccourcir le temps de commit
étape.
Mais le brillant git fera un autre travail git gc
après cela de temps en temps, ce qui a créé PACKFILES et supprime l'instantané dont le contenu est similaire pour réduire sa taille. Après ces travaux git gc
Le coût du disque par git sera le même que pour les autres VCS qui utilisent les méthodes delta.
A travers snapshot
y git gc
. Git sera plus rapide que les autres VCS qui utilisent des méthodes delta à commit
et le coût de la taille du disque doit être similaire à celui des autres VCS qui utilisent les méthodes delta.
Git trouve un équilibre entre les performances et le coût de l'espace disque.
GIT est la meilleure solution
Les fichiers de paquets se trouvent sous .git/objects/pack
Vous pouvez le voir après avoir exécuté la commande "git gc" par vous-même.
13 votes
Vous pouvez également apprécier La parabole de Git qui développe l'idée de Git sous forme d'histoire, l'une des idées centrales étant les instantanés.
1 votes
Merci, je me posais la même question. En regardant la parabole de Git, et en regardant git-scm.com/book/fr/v2/Getting-Started-Git-Basics Si je comprends bien, un "instantané" est une copie intégrale de tous les fichiers modifiés dans un répertoire, ainsi que des pointeurs vers tous les fichiers inchangés dans ce même répertoire. Est-ce exact ?