O Git inclui para cada confirmação uma cópia completa de todos os arquivos, exceto que, para o conteúdo já presente no repositório Git, o instantâneo simplesmente apontará para o conteúdo em vez de duplicá-lo.
Isso também significa que vários arquivos com o mesmo conteúdo são armazenados apenas uma vez.
Portanto, um instantâneo é basicamente uma confirmação, referindo-se ao conteúdo de uma estrutura de diretórios.
Algumas boas referências são:
Você diz ao Git que deseja salvar um instantâneo do seu projeto com o comando git commit e, basicamente, registra um manifesto da aparência de todos os arquivos do seu projeto naquele momento
O Laboratório 12 ilustra como obter instantâneos anteriores
O livro progit possui a descrição mais abrangente de um instantâneo:
A principal diferença entre o Git e qualquer outro VCS (Subversion e amigos incluídos) é a maneira como o Git pensa sobre seus dados.
Conceitualmente, a maioria dos outros sistemas armazena informações como uma lista de alterações baseadas em arquivos. Esses sistemas (CVS, Subversion, Perforce, Bazaar etc.) pensam nas informações que eles mantêm como um conjunto de arquivos e nas alterações feitas em cada arquivo ao longo do tempo.

O Git não pensa ou armazena seus dados dessa maneira. Em vez disso, o Git pensa em seus dados mais como um conjunto de instantâneos de um mini sistema de arquivos.
Toda vez que você confirma ou salva o estado do seu projeto no Git, basicamente tira uma foto da aparência de todos os seus arquivos naquele momento e armazena uma referência a esse instantâneo.
Para ser eficiente, se os arquivos não foram alterados, o Git não armazena o arquivo novamente - apenas um link para o arquivo idêntico anterior que ele já armazenou.
O Git pensa em seus dados mais como abaixo:

Essa é uma distinção importante entre o Git e quase todos os outros VCSs. Isso faz com que o Git reconsidere quase todos os aspectos do controle de versão que a maioria dos outros sistemas copiou da geração anterior. Isso torna o Git mais parecido com um mini sistema de arquivos com algumas ferramentas incrivelmente poderosas construídas sobre ele, em vez de simplesmente um VCS.
Jan Hudec acrescenta este importante comentário :
Embora isso seja verdadeiro e importante no nível conceitual, NÃO é verdadeiro no nível de armazenamento.
O Git usa deltas para armazenamento .
Não apenas isso, mas é mais eficiente do que qualquer outro sistema. Como ele não mantém o histórico por arquivo, quando deseja fazer a compactação delta, pega cada blob, seleciona alguns blobs que provavelmente são semelhantes (usando heurísticas que incluem a aproximação mais próxima da versão anterior e outras), tenta gerar os deltas e escolhe o menor. Dessa forma, ele pode (muitas vezes, depende da heurística) tirar proveito de outros arquivos semelhantes ou versões mais antigas que são mais parecidas que as anteriores. O parâmetro "pack window" permite desempenho de negociação para qualidade de compactação delta. O padrão (10) geralmente fornece resultados decentes, mas quando o espaço é limitado ou para acelerar as transferências de rede, o git gc --aggressivevalor 250 é usado, o que o torna muito lento, mas fornece compactação extra para os dados do histórico.