Como exatamente você o adicionou ao .gitignore? Deve funcionar em todos os diretórios (funciona para mim).
Thilo
Está funcionando para mim também. Também tentei quando está no final do arquivo, se você precisar de uma nova linha (específica da plataforma), mas isso não alterou os diretórios .DS_Store em qualquer parte da hierarquia, ainda era ignorado.
precisa saber é
A pergunta que eu entendi foi: Como ignorar facilmente todas as ocorrências de .DS_Store em todos os subdiretórios sem fazer isso manualmente em todos os subdiretórios. Eu tive o mesmo problema. A resposta abaixo mostra como resolvê-lo (os últimos 2 parágrafos).
usar o seguinte comando
Respostas:
648
Eu acho que o problema que você está tendo é que, em algumas confirmações anteriores, você adicionou acidentalmente .DS_Storearquivos ao repositório. Obviamente, depois que um arquivo for rastreado em seu repositório, ele continuará sendo rastreado, mesmo que corresponda a uma entrada em um arquivo .gitignore aplicável.
Você precisa remover manualmente os .DS_Storearquivos que foram adicionados ao seu repositório. Você pode usar
git rm --cached .DS_Store
Uma vez removido, o git deve ignorá-lo. Você só deve precisar a seguinte linha na raiz do seu .gitignorearquivo: .DS_Store. Não esqueça o período!
git rm --cached .DS_Store
remove somente .DS_Storedo diretório atual. Você pode usar
Dica: como você provavelmente nunca deseja incluir .DS_Storearquivos, faça uma regra global. Primeiro, crie um .gitignorearquivo global em algum lugar, por exemplo
echo .DS_Store >> ~/.gitignore_global
Agora diga ao git para usá-lo em todos os repositórios:
Os últimos 2 parágrafos respondem a esta pergunta. Obrigado.
petrsyn
70
´´git rm --cached .DS_Store´´ remove apenas um .DS_Store do diretório atual. Use 'encontrar. -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch´´ para remover todos os .DS_Stores do
repositório
4
Uma lista de outros arquivos comuns para ignorar pode ser útil
geotheory
14
Má idéia para usar a regra global IMO: Tentar manter configurações globais em vários usuários / máquinas nunca funciona - você deseja as regras que regem seu repositório no próprio repositório. Concordo com isto
Yarin 25/03
15
Eu não concordo com você. (Embora tenha votado positivamente no seu comentário, pois acho que é interessante.) Se fizermos global, todos os usuários de Mac precisarão fazer isso, mas apenas uma vez. Se fizermos todo o repositório, precisamos fazer isso para cada repositório. Não sei sobre você, mas faço novos repositórios o tempo todo. Ao fazer isso globalmente, resolve-se o problema de uma vez por todas.
Edward Newell
356
Adicionar **/.DS_Storeem .gitignorepara o diretório sub
E agora adicione .DS_Store ao seu arquivo .gitignore e, em seguida, confirme e envie novamente com os 2 últimos pedaços de código (git commit ..., git push ...)
Por que duplicar o asterisco? O que isso significa?
MilanG 16/01
1
@MilanG é uma palavra-chave que significa basicamente 'pesquisar neste diretório e em todos os subdiretórios'.
lachie_h
1
Não tenho certeza de que é uma explicação perfeita do significado do asterisco duplo. É um curinga. Poderia *ou **dependendo do que você deseja alcançar. É uma maneira de dizer ao shell como navegar nos diretórios. Esta resposta stackoverflow explica totalmente stackoverflow.com/a/28199633/4092170
Você também pode adicionar o --cachedsinalizador à resposta do auco para manter os arquivos .DS_store locais, como Edward Newell mencionou em sua resposta original. O comando modificado fica assim: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch..cheers e obrigado!
Respostas:
Eu acho que o problema que você está tendo é que, em algumas confirmações anteriores, você adicionou acidentalmente
.DS_Store
arquivos ao repositório. Obviamente, depois que um arquivo for rastreado em seu repositório, ele continuará sendo rastreado, mesmo que corresponda a uma entrada em um arquivo .gitignore aplicável.Você precisa remover manualmente os
.DS_Store
arquivos que foram adicionados ao seu repositório. Você pode usarUma vez removido, o git deve ignorá-lo. Você só deve precisar a seguinte linha na raiz do seu
.gitignore
arquivo:.DS_Store
. Não esqueça o período!remove somente
.DS_Store
do diretório atual. Você pode usarpara remover tudo
.DS_Stores
do repositório.Dica: como você provavelmente nunca deseja incluir
.DS_Store
arquivos, faça uma regra global. Primeiro, crie um.gitignore
arquivo global em algum lugar, por exemploAgora diga ao git para usá-lo em todos os repositórios:
Esta página me ajudou a responder sua pergunta.
fonte
Adicionar
**/.DS_Store
em.gitignore
para o diretório subSe
.DS_Store
já confirmado:Para ignorá-los em todo o repositório: (às vezes chamado
._.DS_Store
)fonte
git rm --cached your_file
firstfind . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, de: stackoverflow.com/questions/18393498/…-f
é necessária se você tiver arquivos abertos nas pastas relevantes:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Se .DS_Store nunca foi adicionado ao seu repositório git, basta adicioná-lo ao seu arquivo .gitignore.
Se você não tiver um, crie um arquivo chamado
No diretório raiz do seu aplicativo e simplesmente escreva
Iniciar. Isso nunca permitirá que o arquivo .DS_Store entre no seu git.
Mas, se já estiver lá, escreva no seu terminal:
em seguida, confirme e envie as alterações para remover o .DS_Store do seu repositório remoto:
E agora adicione .DS_Store ao seu arquivo .gitignore e, em seguida, confirme e envie novamente com os 2 últimos pedaços de código (git commit ..., git push ...)
fonte
*
ou**
dependendo do que você deseja alcançar. É uma maneira de dizer ao shell como navegar nos diretórios. Esta resposta stackoverflow explica totalmente stackoverflow.com/a/28199633/4092170Seu arquivo .gitignore deve ficar assim:
Contanto que você não inclua uma barra, ela será comparada com o nome do arquivo em todos os diretórios. ( daqui )
fonte
git rm --cached path/to/file/here
Etapa 1, exclua todos os
*.DS_store
arquivos. Pode-se corrermas esteja ciente de que
rm -f
pode ser um pouco perigoso se você tiver um erro de digitação! Etapa 2: adicionarpara .gitignore. Isso funcionou para mim!
fonte
Adicione
*.DS_Store
ao seu arquivo .gitignore. Isso funciona para mim perfeitamentefonte
Você também pode adicionar o
--cached
sinalizador à resposta do auco para manter os arquivos .DS_store locais, como Edward Newell mencionou em sua resposta original. O comando modificado fica assim:find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
..cheers e obrigado!fonte
Etapa: 1) Remova os arquivos existentes usando este comando
encontrar . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Etapa: 2) Adicione .DS_Store ao seu arquivo .gitignore
Etapa: 3) Confirme suas alterações no arquivo .gitignore git add .gitignore git commit -m "removed .DS_Store"
fonte
$ git rm ./*.DS_Store
- remova todos os .DS_Store do git$ echo \.DS_Store >> .gitignore
- ignore .DS_Store no futuroconfirmar e empurrar
fonte