Links

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?

image.png

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.

image.png

Então na real, essa linha do tempo era como o arquivo inicial + uma sequencia de diferenças.

image.png

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.

image.png

Ou seja, trabalhar de uma forma rápida em um mar de diffs, se torna uma tarefa de alto custo computacional.

image.png

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.

image.png

Então como o git funciona?

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.