Ao alterar as ramificações no git, como os arquivos são substituídos?

7

Há algo que não entendo sobre como o git gerencia arquivos ao alterar ramificações:

Quando eu corro

git branch xxx

O que acontece com os arquivos físicos existentes? Eles estão sendo movidos? Excluído Armazenado em um banco de dados? O git envolve uma mágica do sistema de arquivos?

    
por Berry Tsakala 22.07.2012 / 12:37

1 resposta

10

Quando você executa git branch xxx , o Git somente cria a nova ramificação, mas na verdade não muda para ela - a árvore de trabalho não é modificada de forma alguma. (Observe que o novo branch terá exatamente os mesmos arquivos e histórico que o antigo.)

Quando você executa git checkout xxx para alternar ramificações, os arquivos da nova ramificação são extraídos dos " banco de dados de objetos ", que é o arquivo mantido sob .git/objects/ que contém originais compactados de todos os arquivos em cada confirmação. (Isso também é onde os próprios commits são armazenados.)

Os arquivos pertencentes à ramificação antiga, mas ausentes da nova, são simplesmente excluídos (porque já existem no armazenamento de objetos, portanto, o Git pode apenas extraí-los novamente se você voltar).

Quando alguns arquivos são idênticos entre as ramificações, git checkout não os toca (nenhuma exclusão / nova extração). Dessa forma, suas alterações não confirmadas podem permanecer nos checkouts.

    
por 22.07.2012 / 14:55