Respostas:
A vantagem .gitignoreé que ele pode ser verificado no próprio repositório, ao contrário .git/info/exclude. Outra vantagem é que você pode ter vários .gitignorearquivos, um dentro de cada diretório / subdiretório para regras de ignição específicas do diretório, ao contrário .git/info/exclude.
Portanto, .gitignoreestá disponível em todos os clones do repositório. Portanto, em grandes equipes de todas as pessoas estão ignorando o mesmo tipo de arquivos de exemplo *.db, *.log. E você pode ter regras de ignição mais específicas por causa de várias .gitignore.
.git/info/excludeestá disponível apenas para clones individuais, portanto, o que uma pessoa ignora em seu clone não está disponível no clone de outra pessoa. Por exemplo, se alguém usa Eclipsepara desenvolvimento, pode fazer sentido para o desenvolvedor adicionar .buildpasta, .git/info/excludeporque outros desenvolvedores podem não estar usando o Eclipse.
Em geral, as regras de arquivos / ignorar que devem ser universalmente ignoradas devem entrar .gitignoree, caso contrário, os arquivos que você deseja ignorar apenas no seu clone local devem entrar.git/info/exclude
~/.gitignoreno seu comentário acima. Meu entendimento é que as regras de ignorar podem estar em três níveis - $PROJECT/.git/info/excludepara regras de ignorar específicas do (projeto, usuário), $PROJECT/<any number of directories>/.gitignoreque são para regras de ignoradas específicas do projeto em qualquer usuário em qualquer lugar (quando check-in), ~/.gitignore para regras de ignoradas específicas do usuário para qualquer projeto desse usuário nessa máquina. Com base no objetivo, você escolhe o local para entrar.
git rm --cached <path-name>o excluirá do repositório, mas o manterá localmente. git update-index --skip-worktree <path-name>ignorará as alterações no arquivo, mas o manterá no repositório. Por curiosidade: Por que você deseja que o arquivo sln seja excluído? É uma parte importante de uma solução .Net, certo?
Pesquisado: três maneiras de excluir arquivos
.gitignore aplica-se a todos os clones deste repositório (com versão, todos o terão),.git/info/exclude aplica-se apenas à sua cópia local deste repositório (local, não compartilhada com outras pessoas),~/.gitignore aplica-se a todos os repositórios no seu computador (local, não compartilhado com outras pessoas).3. requer realmente definir uma configuração no seu computador:
git config --global core.excludesfile '~/.gitignore'
.git/info/excludes, quando deveria .git/info/exclude, conforme confirmado pela documentação à qual ele vincula.
Apenas para oferecer nossa experiência (no mundo real): começamos a usar .git / info / exclude quando tínhamos que personalizar alguns arquivos de configuração em cada ambiente de desenvolvimento, mas ainda assim desejávamos que a fonte fosse mantida no repositório e disponível para outros desenvolvedores.
Dessa forma, os arquivos locais, uma vez clonados e modificados, podem ser excluídos das confirmações sem afetar os arquivos originais no repositório, mas também não necessariamente são ignorados no repositório.
Use .gitignorepara ignorar regras específicas do projeto . Use excludeou um arquivo de ignição global para ignorar regras específicas ao seu ambiente .
Por exemplo, meus arquivos de ignorância global ignoram os arquivos temporários gerados por qualquer editor que eu esteja usando - essa regra é específica para o meu ambiente e pode ser diferente para outro desenvolvedor no mesmo projeto (talvez eles usem um editor diferente). OTOH, meus .gitignorearquivos de projeto ignoram coisas como chaves de API e constroem artefatos - são para o projeto e devem ser os mesmos para todos no projeto.
Isso ajuda?