Estou um pouco confuso sobre os prós e os contras do uso .git/info/exclude
e .gitignore
exclusão de arquivos.
Ambos estão no nível do repositório / projeto, então como eles diferem e quando devemos usar .git/info/exclude
?
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 .gitignore
arquivos, 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, .gitignore
está 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/exclude
está 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 Eclipse
para desenvolvimento, pode fazer sentido para o desenvolvedor adicionar .build
pasta, .git/info/exclude
porque outros desenvolvedores podem não estar usando o Eclipse.
Em geral, as regras de arquivos / ignorar que devem ser universalmente ignoradas devem entrar .gitignore
e, caso contrário, os arquivos que você deseja ignorar apenas no seu clone local devem entrar.git/info/exclude
~/.gitignore
no seu comentário acima. Meu entendimento é que as regras de ignorar podem estar em três níveis -$PROJECT/.git/info/exclude
para regras de ignorar específicas do (projeto, usuário),$PROJECT/<any number of directories>/.gitignore
que 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:fonte
.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.
fonte
Use
.gitignore
para ignorar regras específicas do projeto . Useexclude
ou 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
.gitignore
arquivos 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?
fonte