Sugestão de leitura mais técnica → https://dev.to/leandronsp/pt-br-fundamentos-do-git-um-guia-completo-2djh?s=09
Conhece o jogo dos 7 erros?
Os sistemas centralizados que vieram antes do git tinham um gargalo, que aparecia em projetos na medida em que eles iam ficando velhos.
Por uma questão de otimização, esses versionadores utilizavam a estratégia de delta encoding
para criar uma linha do tempo em que cada modificação é registrada apenas como a diferença entre o arquivo anterior e o atual. Que é a famosa diff
(difference). O que era atrente por ocupar menos espaço no HD.
Então na real, essa linha do tempo era como o arquivo inicial + uma sequencia de diferenças.
E o problema estava no fato de que em projetos grandes era custoso ter todo esse histórico de milhares de pequenas/ou grandes alterações para poder manter a integridade do código. Pois para ter a versão mais recente de um arquivo você era obrigado a processar todo o histórico de diffs, dele.
Ou seja, trabalhar de uma forma rápida em um mar de diffs, se torna uma tarefa de alto custo computacional.
E foi esse o problema que o git resolveu, decidindo ficar exatamente no meio termo entre o jeito rústico do Ctrl+C
e Ctrl+V
e o sistema de delta encoding
.
Ele utiliza blobs para fazer essas fotografias/registros/logs do código, registrando cada arquivo por completo (não apenas as diffs). Cada foto integral de um arquivo recebe um identificador. Esse identificador + o conteúdo do arquivo se tornam um objeto blob
(Binary Large OBject) e é salvo dentro da pasta .git
.