Eu tenho $HOME sob git. A primeira linha do meu arquivo .gitignore é
/*
O resto são padrões para não ignorar usando o modificador ! . Esta primeira linha significa que o padrão é ignorar todos os arquivos no meu diretório pessoal. Esses arquivos que eu quero para o controle de versão vão para .gitignore assim:
!/.gitignore
!/.profile
[...]
Um padrão mais complicado que eu tenho é:
!/.ssh
/.ssh/*
!/.ssh/config
Ou seja, eu quero apenas a versão .ssh/config - não quero que minhas chaves e outros arquivos em .ssh entrem no git. O acima é como eu consegui isso.
Editar: Adicionadas barras ao início de todos os caminhos. Isso faz com que os padrões de ignorar correspondam do topo do repositório ($ HOME) em vez de em qualquer lugar. Por exemplo, se !lib/ fosse um padrão (não ignore tudo no diretório lib) e você incluísse um arquivo .gitignore , anteriormente, o padrão ( !.gitignore ) estaria correspondendo a isso. Com a barra inicial ( !/.gitignore ), ele corresponderá apenas a .gitignore no meu diretório inicial e não em nenhum subdiretório.
Eu não vi um caso em que isso faz uma diferença prática com minha lista de ignorados, mas parece-me ser tecnicamente mais preciso.