Simplificando, .gitkeep é um arquivo fictício convencional. Sua existência serve a apenas um propósito: forçar o Git a rastrear uma pasta que, de outra forma, deveria estar vazia.
Por que é necessário?
A lógica de design do Git é “rastrear alterações de arquivos”, não “rastrear pastas”. Se o seu projeto contém uma pasta vazia, o Git irá ignorá-la completamente e não a enviará para o GitHub ou para o seu servidor.
Isso cria um problema: às vezes, seu código requer que um determinado diretório exista para ser executado, mas você não quer enviar dados de teste ou arquivos temporários. Se o diretório não existir, o programa pode falhar.
Essas pastas geralmente são:
logs/: Para arquivos de loguploads/: Arquivos enviados pelos usuáriostmp/: Arquivos temporárioscache/: Dados de cache
Esses diretórios são necessários em tempo de execução, seu conteúdo não deve ser comitado, mas a pasta em si deve existir.
Como funciona
Para “enganar” o Git para manter essa pasta, colocamos um arquivo oculto sem função real dentro dela, fazendo o Git pensar: “Ah! Tem alguma coisa aqui, preciso registrar.”
Analogia prática:
Imagine que você está construindo uma casa (escrevendo um projeto):
| Arquivo | Descrição |
|---|---|
.gitignore |
Como uma etiqueta de “Não jogue no lixo”, dizendo ao faxineiro (Git) quais itens (como comida estragada, papel usado) absolutamente não devem ser movidos para a casa nova. |
.gitkeep |
Como uma “Caixa de reserva”. A casa nova ainda não está mobiliada, mas você precisa reservar espaço para o depósito, então coloca uma caixa lá para avisar aos carregadores que essa área faz parte da casa e não deve ser demolida. |
Como usar?
- Crie um arquivo chamado
.gitkeepdentro da pasta vazia. - O conteúdo do arquivo pode estar vazio, ou você pode escrever “Keep this directory”.
- Faça
git addecommitdeste arquivo.
Comparando .gitkeep vs .gitignore
| Recurso | .gitkeep |
.gitignore |
|---|---|---|
| Status Oficial | Não oficial (Apenas uma convenção da comunidade) | Oficial (Recurso nativo do Git) |
| Função Principal | Manter uma pasta, evitar que ela seja esquecida pelo Git | Excluir arquivos, evitar que sejam rastreados pelo Git |
| Cenários Comuns | Pastas de log vazias, pastas de cache | Arquivos de senha, node_modules, arquivos temporários |
Conselho Prático: Pensando Fora da Caixa
Embora o .gitkeep seja comumente usado, ele na verdade não faz parte oficial do Git. Na verdade, você poderia usar README.md ou .placeholder para obter o mesmo efeito. Mas por que todos preferem o .gitkeep? Porque é autoexplicativo: “Este arquivo não faz nada além de impedir que o Git exclua esta pasta.”
Se você quiser parecer um pouco mais profissional, há uma abordagem mais criativa e mais funcional do que apenas usar o .gitkeep:
Coloque um .gitignore na pasta vazia com o seguinte conteúdo:
# Ignorar tudo neste diretório
*
# Mas não me ignore (este próprio arquivo .gitignore)
!.gitignore
Isso garante que você mantenha a pasta enquanto garante que arquivos de lixo dentro dela nunca sejam comitados acidentalmente. Este é o verdadeiro método “à prova de falhas” (Foolproof).
Conclusão
.gitkeepé um compromisso humano com a lógica de design do Git.- Não é uma especificação oficial, mas tornou-se um padrão de fato para os desenvolvedores.
- O que é verdadeiramente importante é entender como o
.gitignorefunciona; o.gitkeepé apenas uma pequena ferramenta para ajudar o Git a “entender” pastas vazias.