Tentei carregar um arquivo grande de 1 GB no servidor Github usando o LFS. Tudo correu bem. Eu pensei que, como grandes arquivos binários não são rastreáveis como arquivos de código-fonte, mesmo uma pequena modificação deve custar todo o upload uma vez enviado, conseqüentemente o uso de largura de banda de 1 GB por envio. Mas, uma vez pressionado, notei que era tratado como um arquivo de código-fonte, então o commit foi feito em um instante devido às pequenas alterações. Como isso é possível? Como o Git LFS é tão otimizado mesmo em arquivos grandes?
relate perguntas
-
Windows 10: Não é possível abrir arquivos .ttf dentro de um (antigo) repositório Git
-
GitLab: você não pode enviar commits para arquivos . Você só pode enviar commits que foram confirmados com um de seus próprios e-mails verificados
-
Altere o nome da ramificação padrão do git init
-
adicionar git. comando não funciona
-
Recuperar arquivo excluído do git após o commit
Os blobs binários ainda podem ser divididos em blocos de qualquer quantidade arbitrária, hash e, em seguida, comparados com uma cópia "boa".
Como resultado, é totalmente possível que pequenas modificações dentro ou anexadas a um arquivo grande possam resultar em alterações em um valor igual ao tamanho do bloco de hash.
É uma técnica semelhante ao sistema usado pelo BitTorrent e é relevante para qualquer sistema em que arquivos de tamanho desconhecido precisem ser transferidos por redes com uso mínimo de largura de banda quando ambas as partes já tiverem algumas partes do arquivo.