Entendo que um arquivo .gitignore oculta arquivos especificados do controle de versão do Git. Eu tenho um projeto (LaTeX) que gera muitos arquivos extras (.auth, .dvi, .pdf, logs, etc.) enquanto ele é executado, mas não quero que eles sejam rastreados.
Estou ciente de que eu poderia (talvez devesse) fazê-lo para que todos esses arquivos sejam colocados em uma subpasta separada no projeto, já que eu poderia simplesmente ignorar a pasta.
No entanto, existe alguma maneira viável de manter os arquivos de saída na raiz da árvore do projeto e usar .gitignore para ignorar tudo, exceto os arquivos que estou rastreando com o Git? Algo como
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Respostas:
fonte
wp/
), mas quero NÃO ignorar alguns arquivos que estão no fundo dessa pasta (por exemplowp/path/to/some/location/*
). A única maneira que eu poderia fazê-lo trabalho foi fazendogit add -f wp/path/to/some/location/*
!*/
exceção de simont!*/
faz toda a diferença nas minhas tentativas fúteis de organizar um.gitignore
arquivo para funcionar. Muito obrigado.Se você deseja ignorar todo o conteúdo de um diretório, exceto um arquivo, pode escrever um par de regras para cada diretório no caminho do arquivo. Por exemplo, .gitignore para ignorar a pasta pippo, exceto pippo / pluto / paperino.xml
.gitignore
fonte
foo
e nãofoo/*
é o mesmo. Para que isso funcione, você precisa de usar para a pasta de basefoo/*
Você deseja usar em
/*
vez de*
ou*/
na maioria dos casosO uso
*
é válido, mas funciona recursivamente. Ele não procurará diretórios a partir de então. As pessoas recomendam usar os!*/
diretórios da lista de permissões novamente, mas é realmente melhor colocar na lista negra a pasta de nível mais alto com/*
O código acima iria ignorar todos os arquivos, exceto
.gitignore
,README.md
,folder/a/file.txt
,folder/a/b1/
efolder/a/b2/
e tudo contida nesses dois últimos pastas. (E os arquivos.DS_Store
e*.log
serão ignorados nessas pastas.)Obviamente, eu poderia fazer, por exemplo,
!/folder
ou!/.gitignore
também.Mais informações: http://git-scm.com/docs/gitignore
fonte
.DS_Store
arquivos não são ignorados, mas via linha de comando isso não é um problema. Para contornar isso, eu tive que mudar as**/.DS_Store
regras abaixo./*
-lo!/nested/folder/*
(ou o equivalente!/nested/folder
) sem fazer!/nested/
ou!/nested
primeiro! (e provavelmente/nested/*
no meio). Um truque para lembrar é se você está whitelisting uma subpasta profundamente aninhada você precisa preto as crianças em cada subpasta todo o caminho até, e essas listas negras vai acabar com a "estrela barra" ...Um pouco mais específico:
Exemplo: ignore tudo
webroot/cache
- mas mantenhawebroot/cache/.htaccess
.Observe a barra (/) após a
cache
pasta:FALHAS
TRABALHO
fonte
fonte
Para ignorar alguns arquivos em um diretório, você deve fazer isso na ordem correta :
Por exemplo, ignore tudo na pasta "application", exceto index.php e a pasta "config", preste atenção ao pedido .
Você deve negar o que deseja primeiro.
FALHAS
application/*
!application/config/*
!application/index.php
TRABALHO
!application/config/*
!application/index.php
application/*
fonte
git status
verificar se as alterações ao.gitignore
trabalho como esperadogit status
não vai lhe dizer o que está vendo e o que é ignorado, como você pode saber se isso está funcionando?Você pode usar
git config status.showUntrackedFiles no
e todos os arquivos não rastreados serão ocultados. Vejaman git-config
para detalhes.fonte
Para excluir a pasta do .gitignore, o seguinte pode ser feito.
Isso ignorará todos os arquivos / subpastas dentro,
bower_components
exceto/highcharts
.fonte
Há várias perguntas semelhantes sobre isso, então vou postar o que escrevi antes:
A única maneira de fazer isso funcionar na minha máquina era fazê-lo desta maneira:
Observe como você deve permitir explicitamente o conteúdo para cada nível que você deseja incluir. Portanto, se eu tiver subdiretórios 5 em temas, ainda preciso esclarecer isso.
Isto é do comentário de @ Yarin aqui: https://stackoverflow.com/a/5250314/1696153
Estes foram tópicos úteis:
Eu também tentei
e
**/wp-content/themes/**
ou
/wp-content/themes/**/*
Nada disso funcionou para mim também. Muita trilha e erro!
fonte
Eu tive um problema com a subpasta.
Não funciona:
Trabalho:
fonte
Tentei todas as respostas, conforme indicado aqui acima, mas nenhuma funcionou para mim. Depois de ler a documentação do gitignore ( aqui ), descobri que, se você excluir uma pasta primeiro, os nomes de arquivos na subpasta não estão sendo indexados. Portanto, se você usar o ponto de exclamação posteriormente para incluir um arquivo, ele não será encontrado no índice e, portanto, não será incluído no seu cliente git.
Essa foi a maneira de encontrar a solução. Comecei adicionando exceções para todas as subpastas da árvore de pastas para fazê-lo funcionar, o que é um trabalho e tanto. Depois pude compactar a configuração detalhada para a configuração abaixo, o que é um pouco contrário à documentação.
Working .gitignore:
Como resultado, vejo no meu cliente git que apenas os dois arquivos dentro da pasta Pro / 3rdparty / domain / modulename / estão sendo testados para a próxima confirmação, e era exatamente isso que eu estava procurando.
E se você precisar colocar várias subpastas da mesma pasta na lista de permissões, agrupe as linhas de ponto de exclamação abaixo da instrução de exclusão da seguinte maneira:
Caso contrário, não funcionará como esperado.
fonte
Foi o que funcionou para mim. Queria comprometer apenas um plug-in Cordova ao repositório:
fonte
Eu sei que estou atrasado para a festa, mas aqui está a minha resposta.
Como o @Joakim disse, para ignorar um arquivo, você pode usar algo como abaixo.
mas se o arquivo estiver em diretórios aninhados, será um pouco difícil escrever as regras manualmente.
Por exemplo, se queremos pular todos os arquivos em um
git
projeto, mas não oa.txt
que está localizadoaDir/anotherDir/someOtherDir/aDir/bDir/cDir
. Então, nosso.gitignore
será algo parecido com istoO
.gitignore
arquivo acima mencionado pulará todos os diretórios e arquivos, exceto!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Como você deve ter notado, é difícil definir essas regras.
Para solucionar esse problema, criei um aplicativo de console simples chamado git-do-not-ignore, que gerará as regras para você. Eu hospedei o projeto no github com instruções detalhadas.
Exemplo de uso
Resultado
Há também uma versão web simples disponível aqui
Obrigado.
fonte
Eu tenho Jquery e Angular do caramanchão. Bower os instalou em
O jquery minimizado está dentro do
dist
diretório e angular está dentro doangular
diretório. Eu só precisava que arquivos minimizados fossem enviados ao github. Alguma adulteração do .gitignore e foi isso que consegui conjurar ...Espero que alguém possa achar isso útil.
fonte
Foi assim que eu fiz:
Use
gig status -u
para exibir arquivos individuais em diretórios nãogit status
rastreados de forma recursiva - você só veria pastas, o que poderia fazer você pensar que tudo dentro deles era rastreadofonte
Solução simples se você precisar ignorar tudo, exceto alguns arquivos e poucas pastas raiz :
A mágica está em
/*
(como descrito acima) e ignora tudo na pasta (raiz) MAS NÃO recursivamente.fonte
Eu também tive alguns problemas com a negação de arquivos únicos. Consegui confirmá-los, mas meu IDE (IntelliJ) sempre reclamava de arquivos ignorados, que são rastreados.
Exibe os dois arquivos que eu excluí desta maneira:
No final, isso funcionou para mim:
A chave foi a negação da pasta
typo3conf/
primeiro.Além disso, parece que a ordem das declarações não importa . Em vez disso, você precisa negar explicitamente todas as subpastas, antes de poder negar arquivos únicos nela.
A pasta
!public/typo3conf/
e o conteúdo da pastapublic/typo3conf/*
são duas coisas diferentes para .gitignore.Great thread! Esse problema me incomodou por um tempo;)
fonte
Até agora, nada funcionou para mim porque eu estava tentando adicionar um jar da lib.
Isso não funcionou:
Isso funcionou:
fonte
Eu tenho esse trabalho
fonte
Teve o problema semelhante ao OP, mas nenhuma das 10 principais respostas votadas realmente funcionou .
Eu finalmente descobri o seguinte
Sintaxe incorreta:
Sintaxe correta:
Explicação da página do manual gitignore :
Exemplo estendido:
$ tree.
$ cat .gitignore
$ git status --untracked-files --ignored
fonte
Essência
E provavelmente incluem:
Referência
Em https://git-scm.com/docs/gitignore :
fonte
Parece que encontrei algo que funcionou para mim e que ninguém mais mencionou.
Basicamente, parece impedir que um subdiretório seja ignorado; você precisa ter duas entradas, uma para o subdiretório
!subdir/
e outra para expandir para todos os arquivos e pastas nele contidos.!subdir/**/*
fonte