Adicionei .DS_Store ao arquivo .gitignore, mas parece que ele está ignorando apenas .DS_Store no diretório raiz, não em todas as pastas e subpastas.
Como faço para corrigir isso?
Adicionei .DS_Store ao arquivo .gitignore, mas parece que ele está ignorando apenas .DS_Store no diretório raiz, não em todas as pastas e subpastas.
Como faço para corrigir isso?
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 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 .gitignore
arquivo: .DS_Store
. Não esqueça o período!
git rm --cached .DS_Store
remove somente .DS_Store
do diretório atual. Você pode usar
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
para 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 exemplo
echo .DS_Store >> ~/.gitignore_global
Agora diga ao git para usá-lo em todos os repositórios:
git config --global core.excludesfile ~/.gitignore_global
Esta página me ajudou a responder sua pergunta.
Adicionar **/.DS_Store
em .gitignore
para o diretório sub
Se .DS_Store
já confirmado:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Para ignorá-los em todo o repositório: (às vezes chamado ._.DS_Store
)
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
git rm --cached your_file
first
find . -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
.gitignore
No diretório raiz do seu aplicativo e simplesmente escreva
**/.DS_Store
Iniciar. Isso nunca permitirá que o arquivo .DS_Store entre no seu git.
Mas, se já estiver lá, escreva no seu terminal:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
em seguida, confirme e envie as alterações para remover o .DS_Store do seu repositório remoto:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
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 ...)
*
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
Seu arquivo .gitignore deve ficar assim:
# Ignore Mac DS_Store files
.DS_Store
Contanto que você não inclua uma barra, ela será comparada com o nome do arquivo em todos os diretórios. ( daqui )
git rm --cached path/to/file/here
Etapa 1, exclua todos os *.DS_store
arquivos. Pode-se correr
git rm -f *.DS_Store
mas esteja ciente de que rm -f
pode ser um pouco perigoso se você tiver um erro de digitação! Etapa 2: adicionar
*.DS_Store
.DS_Store
para .gitignore. Isso funcionou para mim!
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!
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"
$ git rm ./*.DS_Store
- remova todos os .DS_Store do git$ echo \.DS_Store >> .gitignore
- ignore .DS_Store no futuroconfirmar e empurrar