Na documentação relevante do Git :
Padrões específicos de um repositório específico, mas que não precisam ser compartilhados com outros repositórios relacionados (por exemplo, arquivos auxiliares que vivem dentro do repositório, mas são específicos ao fluxo de trabalho de um usuário) devem ser inseridos no $GIT_DIR/info/exclude
arquivo.
O .git/info/exclude
arquivo tem o mesmo formato que qualquer .gitignore
arquivo. Outra opção é definir core.excludesFile
o nome de um arquivo que contém padrões globais.
Observe que, se você já possui alterações em estágios, execute o seguinte após editar seus padrões de ignição:
git update-index --assume-unchanged <file-list>
Nota sobre$GIT_DIR
: Esta é uma notação usada em todo o manual do git simplesmente para indicar o caminho para o repositório do git. Se a variável de ambiente estiver definida, ela substituirá o local de qualquer repositório em que você esteja, o que provavelmente não é o que você deseja.
Edit : Outra maneira é usar:
git update-index --skip-worktree <file-list>
Inverta-o por:
git update-index --no-skip-worktree <file-list>
git update-index --assume-unchanged [<file>...]
depois de adicionar o arquivo de exclusão. As alterações não serão detectadas até então.skip-worktree
provavelmente seria o preferidoassume-unchanged
.Atualização : considere usar em
git update-index --skip-worktree [<file>...]
vez disso, obrigado @danShumway! Veja a explicação de Borealid sobre a diferença das duas opções .Resposta antiga:
Se você precisar ignorar as alterações locais nos arquivos rastreados (temos isso com modificações locais nos arquivos de configuração), use
git update-index --assume-unchanged [<file>...]
.fonte
git update-index --assume-unchanged my-file.php
para que ele começasse a ser ignorado. Obrigado pela dica!git update-index --no-assume-unchanged my-file.php
.git/info/exclude
é o que você deseja (para evitar poluir o .gitignore frequentemente compartilhado e rastreado)--assume-unchanged
antes de ler sua atualização . Eu desfiz--no-assume-unchanged
e depois fiz o--skip-worktree
... Estou livre?Adicione as seguintes linhas à seção [alias] do seu arquivo .gitconfig
Agora você pode usar
git ignore my_file
para ignorar alterações no arquivo local egit unignore my_file
parar de ignorá-las.git ignored
lista os arquivos ignorados.Esta resposta foi adquirida em http://gitready.com/intermediate/2009/02/18/temporariamente-ignoring-files.html .
fonte
Você tem várias opções:
.gitignore
arquivo sujo (ou não confirmado) em seu diretório de trabalho (ou aplique-o automaticamente usando o topgit ou alguma outra ferramenta de correção).$GIT_DIR/info/exclude
arquivo, se isso for específico para uma árvore.git config --global core.excludesfile ~/.gitignore
e adicione padrões ao seu~/.gitignore
. Esta opção se aplica se você deseja ignorar certos padrões em todas as árvores. Eu uso isso para.pyc
e.pyo
arquivos, por exemplo.Além disso, verifique se você está usando padrões e não enumerando explicitamente os arquivos, quando aplicável.
fonte
git config --global
definir a opção globalmente.Eu acho que você está procurando:
que ignoram as alterações feitas localmente
Aqui está http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ mais explicações sobre essas soluções!
desfazer o uso:
fonte
--skip-worktree
e--assume-unchanged
em esta pergunta SO--skipworktree
, devo mudar de ideia mais tarde e querer começar a rastrear o arquivo novamente?git update-index --no-skip-worktree <file>
Você pode instalar alguns aliases do git para tornar esse processo mais simples. Isso edita o
[alias]
nó do seu.gitconfig
arquivo.Os atalhos que você instala para você são os seguintes:
git ignore config.xml
config.xml
- impedindo que você faça essas alterações acidentalmente.git unignore config.xml
config.xml
- permitindo que você confirme essas alterações novamente.git ignored
Eu as construí referindo- me à resposta de phatmann - que apresenta uma
--assume-unchanged
versão da mesma.A versão que apresento usa
--skip-worktree
para ignorar alterações locais. Veja a resposta de Borealid para uma explicação completa da diferença, mas--skip-worktree
o objetivo de essencialmente é que os desenvolvedores alterem arquivos sem o risco de confirmar suas alterações .O
git ignored
comando apresentado aqui usagit ls-files -v
e filtra a lista para mostrar apenas as entradas que começam com aS
tag. AS
tag indica um arquivo cujo status é "pular árvore de trabalho". Para obter uma lista completa dos status dos arquivos mostrados porgit ls-files
: consulte a documentação da-t
opção emgit ls-files
.fonte
'!git ls-files -v | grep "^S"'
? O comando não funciona para mim com ele lá .. e parece funcionar bem com ele removido.Expansion of alias 'ignored' failed; 'git' is not a git command
. Isso faz sentido; sem o ponto de exclamação: git alias o seu comando paragit git ls-files …
.git ignore <filename>
, ele se aplica somente a esse diretório. E quando você finalmente quiser fazer as alterações nesse arquivo e confirmar e enviar para remoto, use o práticogit unignore <filename>
para começar a rastrear temporariamente novamente! Obrigado!Você pode simplesmente adicionar um arquivo .gitignore ao seu diretório pessoal,
$HOME/.gitignore
ou seja, ou~/.gitignore
. Em seguida, diga ao git para usar esse arquivo com o comando:Este é um arquivo .gitignore normal, que o git faz referência ao decidir o que ignorar. Como está no diretório inicial, ele se aplica apenas a você e não polui nenhum arquivo .gitignore do projeto.
Uso essa abordagem há anos com ótimos resultados.
fonte
git check-ignore <file-name>
para verificar. LMK se ele funciona para você=
:git config --global core.excludesfile ~/.gitignore
.gitignore
arquivo no diretório inicial e disse ao git para usá-lo; em seguida, excluí os arquivos que gostaria de rastrear localmente. No entanto, depois de enviar as alterações, o repositório remoto também excluiu esses arquivos. Fiz algo de errado?.gitignore
é sobre ignorar arquivos que existem no diretório local. O que você deveria ter feito égit rm --cached
que os remove do repositório, mas os deixa no seu local. Você poderá voltar ao seu commit anterior com algo comogit reset --soft HEAD^
desfazer esse commit e recuperar seus arquivos. Essa é a beleza do git: tudo ainda está presente na sua história do git.Para ignorar arquivos não rastreados, especialmente se eles estiverem localizados em (algumas) pastas que não são rastreadas, uma solução simples é adicionar um
.gitignore
arquivo a todas as pastas não rastreadas e inserir uma única linha contendo,*
seguida por uma nova linha. É uma solução realmente simples e direta se os arquivos não rastreados estiverem em algumas pastas. Para mim, todos os arquivos eram provenientes de uma única pasta não rastreadavendor
e os itens acima apenas funcionavam.fonte
Se o seu repositório ainda não tiver um arquivo .gitignore, uma solução simples é criar um arquivo .gitignore e adicionar
.gitignore
à lista de arquivos a serem ignorados.fonte
.gitignore
arquivo compartilhado na parte superior. Mas meus arquivos sujos estão em uma pasta profunda, então acabei de adicionar os meus.gitignore
ao lado deles. 1