Pergunta

Como posso remover esses arquivos .DS_Store Mac OS X irritantes de um repositório Git?

Foi útil?

Solução

Remova arquivos existentes a partir do repositório:

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Adicione a linha

.DS_Store

para o .gitignore arquivo, que pode ser encontrado no nível superior do seu repositório (ou criado se ele não está lá já). Você pode fazer isso facilmente com este comando no diretório superior

echo .DS_Store >> .gitignore

Em seguida

git add .gitignore
git commit -m '.DS_Store banished!'

Outras dicas

Combinando benzado e respostas de webmat, atualizando com git rm, não falhando em arquivos encontrados que não estão em repo, e tornando-colar-capazes genericamente para qualquer usuário:

# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore

A melhor solução para resolver este problema é Globalmente ignorar esses arquivos de todos os repos git em seu sistema. Isto pode ser feito através da criação de um arquivo gitignore global como:

vi ~/.gitignore_global

Adicionar Regras para ignorar arquivos como:

# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# Logs and databases #
######################
*.log
*.sql
*.sqlite

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Agora, adicione este arquivo para o git config mundial:

git config --global core.excludesfile ~/.gitignore_global

Editar:

Ícones removido como eles possam ter necessidade de ser cometido como ativos de aplicação.

Em algumas situações, você pode também querer ignorar alguns arquivos globalmente. Para mim, .DS_Store é um deles. Veja como:

git config --global core.excludesfile /Users/mat/.gitignore

(ou qualquer arquivo de sua escolha)

Editar seguida, o arquivo apenas como .gitignore um repo. Note que eu acho que você tem que usar um caminho absoluto.

Se você não conseguir remover os arquivos porque eles têm alterações encenado uso:

git rm --cached -f *.DS_Store

Eu tive que mudar git-rm para rm git no exemplo acima para obtê-lo para o trabalho:

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print

Open terminal e digite "cd "

  1. Remova arquivos existentes: find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Adicione esta .DS_Store

  4. digite "ctrl + x"

  5. Digite "y"

  6. Enter para salvar o arquivo

  7. git add .gitignore

  8. git commit -m '.DS_Store removed.'

Top votou resposta é incrível, mas ajudando os novatos como eu, aqui é como criar o arquivo .gitignore, editá-lo, guardá-lo, remover os arquivos que você já possa ter acrescentado git, então empurrar para cima o arquivo para github.

Crie o arquivo .gitignore

Para criar um arquivo .gitignore, você pode apenas touch o arquivo que cria um arquivo em branco com o nome especificado. Queremos criar o arquivo chamado .gitignore para que possamos usar o comando:

touch .gitignore

ignorar os arquivos

Agora você tem que adicionar a linha que diz git para ignorar os arquivos DS Store para o seu .gitignore. Você pode usar o editor nano para fazer isso.

nano .gitignore

Nano é bom porque ele inclui instruções sobre como sair dela. ( Ctrl - O para salvar, Ctrl - X para sair)

Copiar e colar algumas das idéias deste Github essência que lista alguns arquivos comuns para ignorar . Maioria das mais importantes, para responder a esta pergunta, seria:

# OS generated files #
######################
.DS_Store
.DS_Store?

Os # são comentários, e irá ajudá-lo a organizar seu arquivo à medida que cresce.

Este Github artigo também tem algumas idéias e diretrizes gerais.

Remover os arquivos já adicionados a git

Finalmente, você precisa realmente remover esses arquivos DS Store a partir do seu diretório.

Use este grande comando do topo votou resposta. Isso vai passar por todas as pastas no seu diretório, e remover esses arquivos do git.

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Premir .gitignore até Github

A última etapa, você precisa realmente comprometer seu arquivo .gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

excluí-los usando git-rm, e depois adicionar .DS_Store para .gitignore para detê-los ficando acrescentado novamente. Você também pode usar blueharvest para detê-los se criou todos juntos

Use este comando para remover os arquivos existentes:

find . -name '*.DS_Store' -type f -delete

Em seguida, adicione .DS_Store para .gitignore

A seguir funcionou melhor para mim. Manipulados arquivos incomparáveis ??e arquivos com modificações locais. Para referência, este foi em um sistema Mac 10,7 executar git 1.7.4.4.

Encontrar e remover:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f

Eu também ignorar globalmente .DS_Store em todos os repositórios, definindo um core.excludesfile global.

Em primeiro lugar, criar o arquivo (se ainda não existir):

touch ~/.gitignore

Em seguida, adicione a seguinte linha e salvar:

.DS_Store

Agora configure git a respeitar o arquivo global:

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

No caso de você deseja remover arquivos DS_Store para cada pasta e subpasta:


Em caso de DS_Store já comprometidos:

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

Ignore-os por:

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

Descobri que a seguinte linha de Snipplr faz melhor em limpar tudo .DS_Store, incluindo um que tem as modificações locais.

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print

opção --cached, mantém o seu .DS_Store local, uma vez que vai ser reproduzida de qualquer maneira.

E, assim como mencionado toda acima, .DS_Store add para .gitignore arquivo na raiz do seu projeto. Em seguida, ele não será mais em sua visão (de repos).

Estou um pouco atrasado para a festa, mas eu tenho uma boa resposta. Para remover os arquivos .DS_Store, use os seguintes comandos a partir de uma janela do terminal, mas ser a exclusão de arquivos muito cuidado com 'encontrar'. Usando um nome específico com a opção -name é uma das maneiras mais seguras para usá-lo:

cd directory/above/affected/workareas
find . -name .DS_Store -delete

Você pode deixar de fora o "-delete" se você quiser simplesmente incluí-los antes e depois. Isso vai assegurar-lhe que ele está desaparecido.

No que diz respeito ao ~ / aconselhamento .gitignore_global: ter cuidado aqui. Você deseja colocar esse arquivo agradável em .gitignore dentro do nível superior de cada workarea e cometê-lo, de modo que qualquer um que clona o seu repo vai ganhar o benefício de seu uso.

Este trabalho:

find . -name "*.DS_Store" -type f -exec git-rm {} \;

Apaga todos os arquivos cujos nomes terminam com .DS_Store, incluindo ._.DS_Store.

Por alguma razão nenhuma das opções acima funcionou no meu mac.

A minha solução é a partir do prazo terminal:

rm .DS_Store

Em seguida, execute seguinte comando:

git pull origin master

Ao inicializar seu repositório, pule o comando git que contém

-u

e ele não deve ser um problema.

Isso funcionou para mim, combinação de duas respostas de cima:

  • $ git rm --cached -f * .DS_Store
  • $ git commit -m "filter-branch --índice-filter 'git rm --cached --ignore-unmatch .DS_Store "
  • $ git push origem mestre --force
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force

Existem algumas soluções para resolver este problema. Para evitar a criação de arquivos .DS_Store, não para não usar o OS X Finder para pastas vista. Uma maneira alternativa de ver as pastas é usar linha de comando UNIX. Para remover o .DS_Store arquivos de um produto de terceiros chamado DS_Store Terminator pode ser usado. Para excluir os arquivos .DS_Store de todo o sistema de um comando UNIX shell podem ser usados. Terminal Lançamento de Aplicações: Utilities No UNIX shell prompt insira o seguinte comando UNIX: achado sudo / -name ".DS_Store" -depth -exec rm {} \; Quando solicitado a fornecer uma senha digite a senha Mac OS X administrador.

Este comando é encontrar e remover todas as ocorrências de .DS_Store a partir da raiz (/) do sistema de arquivos através de toda a máquina. Para configurar esse comando seja executado como uma tarefa agendada siga os passos abaixo: Terminal Lançamento de Aplicações: Utilities No UNIX shell prompt insira o seguinte comando UNIX:

sudo crontab -e Quando solicitado a fornecer uma senha digite a senha Mac OS X Administrador. Uma vez na imprensa vi editor a letra I no seu teclado uma vez e digite o seguinte:

15 1 * * * Encontrar root / -name ".DS_Store" -depth -exec rm {} \;

Isso é chamado de entrada crontab, que tem o seguinte formato:

Minuto Usuário Hora DiaDoMês Mês DayOfWeek comando.

Os meios de entrada crontab que o comando será executado pelo sistema automaticamente em 1:15 todos os dias pela conta chamada raiz.

O comando começa a partir de encontrar todo o caminho até. Se o sistema não está em execução este comando não são executados.

Para salvar a imprensa entrada a tecla Esc uma vez, então, simultaneamente, pressione Shift + z + z.

Nota:. Informações no Passo 4 é para o editor vi única

adicione isso ao seu arquivo .gitignore

#Ignore folder mac
.DS_Store

save isso e fazer commit

git add -A
git commit -m "ignore .DS_Store"

e agora você ignorar isso para todos os seus commits

Remova arquivos ignorados:

(. DS_Store)

$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch

Não há necessidade de .DS_STORE remover localmente

Apenas adicioná-lo para o arquivo .gitignore

O arquivo .gitignore é apenas um arquivo de texto que diz Git quais arquivos ou pastas a ignorar em um projeto.

Comandos

  • nano .gitignore
  • Write .DS_Store Em seguida, clique CTRL+X > y > Hit Return
  • git status Para ter um último olhar para as alterações
  • git add .gitignore
  • git commit -m 'YOUR COMMIT MESSAGE'
  • git push origin master
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top