Git global ignorado

841

Quero configurar o Git para ignorar globalmente certos arquivos.

Adicionei um .gitignorearquivo ao meu diretório pessoal ( /Users/me/) e a seguinte linha:

*.tmproj

Mas não está ignorando esse tipo de arquivo, tem alguma ideia do que estou fazendo de errado?

Fuzz leve
fonte
7
Você também pode conferir as sugestões de ignorar do GitHub - help.github.com/articles/ignoring-files ; eles têm um repositório de comum ignorar padrões
drzaus
6
Você também pode considerar usar apenas um .gitignore em projetos individuais. Caso contrário, se você (ou outra pessoa) clonar o projeto em um novo sistema, também precisará recriar o arquivo e a configuração globais de exclusões a cada vez.
Stan Kurdziel
25
Os arquivos ignoráveis ​​que o projeto cria devem estar no arquivo .gitignore do projeto, os arquivos ignoráveis ​​que as coisas criadas em sua máquina devem ter no .gitignore global (como arquivos temporários de editor / IDE e similares).
Pylinux # 22/16
2
Os diretórios do ambiente virtual Python são um caso de uso comum para entradas no meu arquivo excludes global ou local.
Guisado
10
@Pylinux Na verdade, o IDE pessoal e as coisas específicas do fluxo de trabalho , por git-scm , podem ir para o arquivo não rastreado .git/info/excludeno repositório, portanto não precisam necessariamente ir para o arquivo global. Além disso, o arquivo gitignore global padrão e automático é $HOME/.config/git/ignore.
Acumenus 03/10/16

Respostas:

1422

Você precisa configurar seu core.excludesfilearquivo de configuração global para apontar para esse arquivo de ignoração global.

por exemplo

* nix ou Windows git bash:

git config --global core.excludesfile '~/.gitignore'

Cmd do Windows:

git config --global core.excludesfile "%USERPROFILE%\.gitignore"

Windows PowerShell:

git config --global core.excludesfile "$Env:USERPROFILE\.gitignore"

Para Windows, defina o local C:\Users\{myusername}\.gitignore. Você pode verificar se o valor da configuração está correto fazendo:

git config --global core.excludesfile

O resultado deve ser o caminho expandido para o seu perfil de usuário .gitignore. Verifique se o valor não contém a %USERPROFILE%cadeia não expandida .

Importante : Os comandos acima definirão apenas o local do arquivo de ignorados que o git usará. O arquivo ainda precisa ser criado manualmente nesse local e preenchido com a lista de ignorados. (do comentário de muruge )

Você pode ler sobre o comando em https://help.github.com/articles/ignoring-files/#create-a-global-gitignore

CB Bailey
fonte
2
Desde que não esteja no seu HEADou no seu índice, não deve fazer diferença se o arquivo já foi rastreado ou não. Pode ser útil se você adicionar a saída de git status, git config core.excludesfileà sua pergunta.
perfil completo de CB Bailey
2
Posso usar #no início das linhas internas ~/.gitignorepara adicionar comentários dentro do arquivo global de ignorados?
Dror 14/05
9
Versões recentes do kit de ferramentas oficial do Git Windows usam a sintaxe * nix; se essa linha não funcionar, tente a * nix one.
Andy Jones
9
Não consegui fazer isso funcionar usando a %USERPROFILE%variável Eu tive que inserir o caminho completo para o arquivo usando os separadores de diretório * nix. exemplo: core.excludesfile C: /Users/User/.gitignore
Vince
21
Não foi possível fazê-lo funcionar com a variável% USERPROFILE%. Eu tive que usar o git config --global core.excludesfile '~ / .gitignore' no Windows para configurá-lo para o local C: / users / {myusername} / .gitignore. Além disso, o comando acima definirá apenas o local do arquivo de ignorados que o git usará. O arquivo ainda precisa ser criado manualmente nesse local e preenchido com a lista de ignorados.
muruge
301

Antes de reconfigurar o arquivo de exclusões globais, convém verificar no que ele está configurado atualmente, usando este comando:

git config --get core.excludesfile

No meu caso, quando o executei, vi que meu arquivo de exclusão global estava configurado para

~ / .gitignore_global
e já havia algumas coisas listadas lá. Portanto, no caso da pergunta em questão, talvez faça sentido verificar primeiro um arquivo de exclusão existente e adicionar a nova máscara de arquivo a ele.

yanni
fonte
2
isso funciona muito bem. Configure seu arquivo gitignore global como de costume; uma entrada por linha.
Maarten Hartman
237

Embora outras respostas estejam corretas, elas estão definindo o valor da configuração global, enquanto há um local padrão do git para o arquivo global git ignore:

* nix:

~/.config/git/ignore

Janelas:

%USERPROFILE%\git\ignore

Pode ser necessário criar um gitdiretório e um ignorearquivo, mas você pode colocar suas ignorâncias globais nesse arquivo e pronto!

Fonte

O arquivo no qual colocar um padrão depende de como o padrão deve ser usado.

...

  • Os padrões que um usuário deseja que o Git ignore em todas as situações (por exemplo, arquivos temporários ou de backup gerados pelo editor escolhido pelo usuário) geralmente entram em um arquivo especificado por core.excludesFileele ~/.gitconfig. Seu valor padrão é $ XDG_CONFIG_HOME / git / ignore. Se $ XDG_CONFIG_HOME não estiver definido ou vazio, $ HOME / .config / git / ignore será usado.
Steve Jorgensen
fonte
1
Isso é ótimo; Eu não sabia sobre isso ... no entanto, este não é um arquivo gerado? Ele pode ser substituído quando você atualiza / reinstala?
Danielsdesk 11/11/2015
1
Acredito que o arquivo seja criado / modificado executando certos gitcomandos. Como é um arquivo de configurações no diretório de cada usuário, acho que nunca deve ser substituído.
Steve Jorgensen
1
Concordo que esta deve ser a resposta aceita, no entanto, não o encontrei em -t̶h̶e̶ ̶d̶o̶c̶u̶m̶e̶n̶t̶a̶t̶i̶o̶n̶ um artigo de ajuda ( help.github.com/articles/ignoring-files )
AVProgrammer
1
@AVProgrammer Acabei de editar a resposta para refletir a mudança na organização do documento de origem.
Steve Jorgensen
7
Parece que no Windows o caminho também é ~/.config/git/ignore.
suriv
40

Para criar um gitignore global a partir do zero:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. A primeira linha altera o diretório para C:/Users/User
  2. Depois disso, você cria um arquivo vazio com .gitignore_global extensão
  3. E finalmente definindo ignorar global para esse arquivo.
  4. Em seguida, você deve abri-lo com algum tipo de bloco de notas e adicionar as regras de ignorar necessárias.
Phoera
fonte
18

A partir daqui .

Se você criar um arquivo em seu repositório chamado .gitignore, o git usará suas regras ao examinar os arquivos a serem confirmados. Observe que o git não ignorará um arquivo que já foi rastreado antes de uma regra ser adicionada a esse arquivo para ignorá-lo. Nesse caso, o arquivo deve ser não rastreado, geralmente com:

git rm --cached filename

É o seu caso?

LaGrandMere
fonte
Eu estou tentando ignorar globalmente, o que não está acontecendo!
Leve poeira de papel
@MildFuzz no Linux, o core.excludesfilearquivo parece ser interpretado de maneira diferente de um .gitignorearquivo. Se você deseja ignorar um diretório inteiro, basta colocar o nome do diretório como em .vscode/vez de.vscode/*
Aspiring Dev
11

Se você usa o sistema Unix, pode resolver seu problema em dois comandos. Onde a primeira inicialização configura e a segunda altera o arquivo com um arquivo a ser ignorado.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
Purkhalo Alex
fonte
10
  1. Crie um arquivo .gitignore no seu diretório pessoal
touch ~/.gitignore
  1. Adicione arquivos a ele (as pastas não são reconhecidas )

Exemplo

# these work
*.gz
*.tmproj
*.7z

# these won't as they are folders
.vscode/
build/

# but you can do this
.vscode/*
build/*
  1. Verifique se um git já possui um gitignore global
git config --get core.excludesfile
  1. Diga ao git onde está o arquivo
git config --global core.excludesfile '~/.gitignore'

Voila !!

Prerak Mann
fonte
"pastas não são reconhecidas" - Isso é errado, as pastas estão funcionando bem ...
TobiX 16/10/19
7

Lembre-se de que executar o comando

git config --global core.excludesfile '~/.gitignore'

apenas configurará o arquivo global, mas NÃO o criará. No Windows, verifique o diretório de Usuários para o .gitconfigarquivo e edite-o de acordo com suas preferências. No meu caso, é assim:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
md mouse
fonte
3

Consigo ignorar um .tmprojarquivo incluindo um .tmprojou *.tmprojno meu/users/me/.gitignore-global arquivo.

Observe que o nome do arquivo .gitignore-globalnão é .gitignore. Não funcionou incluindo .tmprojou*.tmproj em um arquivo chamado .gitignoreno /users/mediretório

Sri Sankaran
fonte
4
Não importa como você chama seu arquivo de ignição global, desde que corresponda à sua core.excludesfileconfiguração.
perfil completo de CB Bailey
Ah! Bom ponto @CharlesBailey. No entanto, isso pode ser algo que o escritor pode querer verificar. O motivo pelo qual o .tmprojarquivo não está sendo ignorado pode ser porque o usuário excludesfilenão está .gitignore.
Sri Sankaran
Eu acho que ele pensou que o usuário seria inteligente o suficiente para perceber.
WORMSS 22/03
2

Você deve criar um arquivo de exclusão para isso. Confira esta essência que é bastante auto-explicativa.

No entanto, para resolver sua pergunta, você pode desindexar o .tmprojarquivo (se você já o adicionou ao índice) com git rm --cached path/to/.tmproj, ou git adde commitseu .gitignorearquivo.

Nic
fonte
Eu estou tentando fazer isso a nível mundial, e não apenas por repo
Mild Fuzz
Sim, é com isso que eu me ligo. Fiquei um pouco confuso com a pergunta original. Você fez o git rm --cached?
Nic
Sim, tentei isso. Parece-me que segui todos os conselhos recomendados! o que estou perdendo?
Leve poeira de papel
Como sugerido, eu adicionar seu git status e informações exclui a questão :)
Nic
2

no subsistema windows para linux, tive que navegar até a raiz do subsistema até cd ~/entãotouch .gitignore e, em seguida, atualizar a configuração gitignore global em lá.

Eu espero que isso ajude alguém.

bboydflo
fonte
0

Se você estiver usando o VSCODE, poderá obter esta extensão para lidar com a tarefa. Ele monitora seu espaço de trabalho toda vez que você salva seu trabalho e ajuda a ignorar automaticamente os arquivos e pastas especificados nas configurações do vscode.json ignoreit (extensão vscode)

marcdomain
fonte