.gitignore Não é a única forma de ignorar ficheiros no Git
Mecanismos de ignore por repositório vs. por utilizador/global
- Vários comentadores destacam
.git/info/excludepara ignores por repositório e por utilizador (por exemplo, scripts locais, Makefiles, dados de exemplo, notas) sem poluir o.gitignorepartilhado. - Os ignores globais/ao nível do utilizador via
~/.config/git/ignore(ou equivalente) são enfatizados como subutilizados, ideais para lixo de SO/editor (por exemplo,.DS_Store, pastas de IDE). - Esclarecimento:
--globalno Git é por utilizador; a verdadeira configuração ao nível da máquina é--system(por exemplo,/etc/gitignore), que raramente é recomendada e pode ser sobrescrita pela configuração do utilizador. - Algumas ferramentas (Magit) expõem uma interface para escolher entre o
.gitignorepartilhado e o.git/info/excludeprivado.
O que pertence ao .gitignore vs. ignores globais
- Uma corrente defende que o
.gitignoredo repositório deve cobrir apenas artefactos específicos do repositório (saídas de compilação, pastas de dependências). Ficheiros específicos do utilizador/IDE/SO pertencem ao ignore global de cada programador. - Outra corrente: adicionar lixo comum de SO/IDE (por exemplo,
.DS_Store,.vscode,.idea) ao.gitignoredo repositório para proteger colaboradores menos experientes e reduzir atritos na revisão. - Tensão observada: política estrita de “apenas do projeto” vs. prevenção pragmática de erros recorrentes; preocupação de que os ficheiros
.gitignoreacumulem “lixo” específico de IDE e plataforma.
Diretórios locais de rascunho / “attic”
- Vários padrões para áreas locais de lixo:
- Um nome de diretório globalmente ignorado como
attic,auxouscratch/. .gitignorepor diretório com*para que o diretório e todo o seu conteúdo (incluindo o próprio ficheiro de ignore) sejam ignorados.
- Um nome de diretório globalmente ignorado como
- São usados para notas pessoais, experiências ou ficheiros de editor/projeto que nunca devem ser commitados.
Ergonomia, complexidade e descoberta no Git
- Alguns veem o artigo como uma ligeira repetição da documentação oficial; outros dizem que revelou funcionalidades que “sempre quiseram” mas nunca souberam que existiam.
- O Git é descrito ao mesmo tempo como “belamente versátil” e suficientemente confuso para que os utilizadores nem sempre consigam prever os efeitos dos comandos.
- A descoberta é um tema recorrente: o Git muitas vezes pode fazer o que as pessoas querem; a parte difícil é aprender a invocação certa.
Para além dos ignores: ferramentas e truques relacionados
.gitattributesé mencionado para tratar alguns ficheiros como “diff-ignored” (ou com estratégias de merge personalizadas), especialmente ficheiros de lock grandes, embora outros argumentem que estes diffs são importantes para segurança e auditoria de dependências.- Hooks via um diretório global de hooks podem bloquear ficheiros binários ou grandes, ou impor políticas sobre ficheiros de lock.
git update-index --assume-unchanged/--skip-worktree(muitas vezes como aliases) são usados para modificar localmente ficheiros rastreados sem mostrar alterações, embora sejam fáceis de esquecer.includeIfna configuração do Git permite configuração por diretório ou por remoto (por exemplo, emails diferentes por empresa).