para o arquivo .gitignore, que pode ser encontrado no nível superior do seu repositório (ou criado, se já não estiver lá). Você pode fazer isso facilmente com este comando no diretório superior
É realmente trivial, mas o uso -execserá iniciado git-rmuma vez para cada arquivo .DS_Store, enquanto xargscolocará todos os caminhos em uma linha de comando. Prefiro principalmente xargsporque não preciso me preocupar em escapar de muitos caracteres especiais.
benzado
8
Isso deve usar .git / info / exclude, não .gitignore. Consulte stackoverflow.com/questions/1753070/… para obter uma explicação da diferença entre os dois.
Andrew Grimm
106
@ Andrew: Eu não concordo. Nunca seria útil fazer o check-in de um arquivo .DS_Store, por isso faz mais sentido como uma configuração para todo o repositório e para todos os usuários, em vez de algo que cada usuário de Mac precisa se lembrar de configurar em sua própria máquina.
benzado
51
A adição .DS_Storeao .gitignoretrabalho recursivamente? Ou seja, isso também será ignorado some/level/of/folders/.DS_Store?
Charlie Schliesser
70
@CharlieS Sim, se o padrão não contiver uma barra, será comparado com o nome do arquivo em todos os diretórios.
benzado
239
Combinando as respostas do benzado e do webmat, atualizando com git rm, sem falhar nos arquivos encontrados que não estão no repositório, e tornando-o capaz de colar 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
Eu descobri que ao usar um repositório git no meu diretório pessoal (também conhecido como repositório "dotfiles"), ter ~/.gitignorecomo meu arquivo de exclusão global é um problema. Há arquivos que quero excluir do meu diretório pessoal que não quero ignorar globalmente. Em ~/.gitexcludesvez disso, uso pela mesma diretiva:core.excludesfile
AL o X
156
A melhor solução para resolver esse problema é ignorar globalmente esses arquivos de todos os repositórios git no seu sistema. Isso pode ser feito criando um arquivo gitignore global como:
vi ~/.gitignore_global
Adicionando 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 à sua configuração global do git:
Você também pode adicionar regras acima no .gitignore do seu repositório. Isso manteria esses arquivos afastados no nível do repositório, se houver vários colaboradores no seu projeto. No entanto, nesses casos, o .gitignore deve lidar com os arquivos específicos de todos os sistemas operacionais, etc., se diferentes desenvolvedores estiverem usando sistemas operacionais diferentes. Como regras para linux, OSX etc.
Nerve 13/07/2013
Eu recomendaria que cada desenvolvedor lidasse com seus arquivos específicos de SO em seu próprio .global_ignore, para que o projeto .gitignore seja específico do projeto.
mcfedr
deve executar: git add .gitignore_global, para que outros programadores também tenham esse arquivo em seu ambiente local?
stackdave
58
Em algumas situações, você também pode querer ignorar alguns arquivos globalmente. Para mim, .DS_Store é um deles. Aqui está como:
nano .gitignorecria o arquivo se não estiver presente, este comando deve ser executado a partir da pasta raiz do projeto
Saif
17
A resposta mais votada é incrível, mas, ajudando os novatos como eu, aqui está como criar o arquivo .gitignore, editá-lo, salvá-lo, remover os arquivos que você já adicionou ao git e enviar o arquivo para o Github.
Crie o arquivo .gitignore
Para criar um arquivo .gitignore, você pode apenas toucho 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
Ignore os arquivos
Agora você precisa adicionar a linha que diz ao git para ignorar os arquivos da DS Store no seu .gitignore. Você pode usar o editor nano para fazer isso.
nano .gitignore
O Nano é bom porque inclui instruções sobre como sair dele. ( Ctrl- Opara salvar, Ctrl- Xpara sair)
Copie e cole algumas das idéias desta lista do Github, que lista alguns arquivos comuns a serem ignorados. Os mais importantes, para responder a essa pergunta, seriam:
# OS generated files #
######################
.DS_Store
.DS_Store?
Os # são comentários e ajudarão você a organizar seu arquivo à medida que cresce.
Este artigo no Github também tem algumas idéias e diretrizes gerais.
Remova os arquivos já adicionados ao git
Por fim, você precisa remover realmente esses arquivos da DS Store do seu diretório.
Use este ótimo comando da resposta mais votada. Isso examinará todas as pastas do seu diretório e removerá esses arquivos do git.
exclua-os usando git-rme adicione .DS_Store para .gitignorepara impedir que eles sejam adicionados novamente. Você também pode usar o blueharvest para impedir que eles sejam criados todos juntos
O seguinte funcionou melhor para mim. Arquivos incomparáveis manipulados e arquivos com modificações locais. Para referência, isso ocorreu em um sistema Mac 10.7 executando o git 1.7.4.4.
Estou um pouco atrasado para a festa, mas tenho uma boa resposta. Para remover os arquivos .DS_Store, use os seguintes comandos em uma janela do terminal, mas tenha muito cuidado ao excluir arquivos com 'find'. Usar um nome específico com a opção -name é uma das maneiras mais seguras de usá-lo:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Você pode deixar de lado o "-delete" se quiser simplesmente listá-los antes e depois. Isso vai garantir que eles se foram.
Com relação ao conselho ~ / .gitignore_global: tenha cuidado aqui. Você deseja colocar esse arquivo legal em .gitignore no nível superior de cada área de trabalho e enviá-lo, para que qualquer pessoa que clone seu repositório obtenha o benefício de seu uso.
Existem algumas soluções para resolver esse problema. Para evitar a criação de arquivos .DS_Store, não use o OS X Finder para visualizar pastas. Uma maneira alternativa de visualizar pastas é usar a linha de comando do UNIX. Para remover os arquivos .DS_Store, um produto de terceiros chamado DS_Store Terminator pode ser usado. Para excluir os arquivos .DS_Store de todo o sistema, um comando shell UNIX pode ser usado. Iniciar terminal a partir de aplicativos: Utilitários No prompt do shell do UNIX, digite o seguinte comando do UNIX: sudo find / -name ".DS_Store" -thp -exec rm {} \; Quando uma senha for solicitada, digite a senha de administrador do Mac OS X.
Este comando é para localizar e remover todas as ocorrências de .DS_Store iniciando na raiz (/) do sistema de arquivos por toda a máquina. Para configurar esse comando para ser executado como uma tarefa agendada, siga as etapas abaixo: Inicie o Terminal a partir de aplicativos: Utilitários No prompt do shell do UNIX, digite o seguinte comando UNIX:
sudo crontab -e Quando for solicitada uma senha, digite a senha de administrador do Mac OS X. Uma vez no editor vi, pressione a letra I no teclado uma vez e digite o seguinte:
Respostas:
Remova os arquivos existentes do repositório:
Adicione a linha
para o arquivo
.gitignore
, que pode ser encontrado no nível superior do seu repositório (ou criado, se já não estiver lá). Você pode fazer isso facilmente com este comando no diretório superiorEntão
fonte
-exec
será iniciadogit-rm
uma vez para cada arquivo .DS_Store, enquantoxargs
colocará todos os caminhos em uma linha de comando. Prefiro principalmentexargs
porque não preciso me preocupar em escapar de muitos caracteres especiais..DS_Store
ao.gitignore
trabalho recursivamente? Ou seja, isso também será ignoradosome/level/of/folders/.DS_Store
?Combinando as respostas do benzado e do webmat, atualizando com
git rm
, sem falhar nos arquivos encontrados que não estão no repositório, e tornando-o capaz de colar genericamente para qualquer usuário:fonte
~/.gitignore
como meu arquivo de exclusão global é um problema. Há arquivos que quero excluir do meu diretório pessoal que não quero ignorar globalmente. Em~/.gitexcludes
vez disso, uso pela mesma diretiva:core.excludesfile
A melhor solução para resolver esse problema é ignorar globalmente esses arquivos de todos os repositórios git no seu sistema. Isso pode ser feito criando um arquivo gitignore global como:
Adicionando regras para ignorar arquivos como:
Agora, adicione este arquivo à sua configuração global do git:
Editar:
Ícones removidos, pois eles podem precisar ser confirmados como ativos do aplicativo.
fonte
Em algumas situações, você também pode querer ignorar alguns arquivos globalmente. Para mim, .DS_Store é um deles. Aqui está como:
(Ou qualquer arquivo de sua escolha)
Em seguida, edite o arquivo como o .gitignore de um repositório. Note que eu acho que você precisa usar um caminho absoluto.
fonte
Se você não conseguir remover os arquivos porque eles têm alterações em etapas, use:
fonte
Abra o terminal e digite "cd <ProjectPath>"
Remova os arquivos existentes:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Adicione isso
.DS_Store
digite "ctrl + x"
Digite "y"
Enter para salvar o arquivo
git add .gitignore
git commit -m '.DS_Store removed.'
fonte
nano .gitignore
cria o arquivo se não estiver presente, este comando deve ser executado a partir da pasta raiz do projetoA resposta mais votada é incrível, mas, ajudando os novatos como eu, aqui está como criar o arquivo .gitignore, editá-lo, salvá-lo, remover os arquivos que você já adicionou ao git e enviar o arquivo para o 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
Ignore os arquivos
Agora você precisa adicionar a linha que diz ao git para ignorar os arquivos da DS Store no seu .gitignore. Você pode usar o editor nano para fazer isso.
nano .gitignore
O Nano é bom porque inclui instruções sobre como sair dele. ( Ctrl- Opara salvar, Ctrl- Xpara sair)
Copie e cole algumas das idéias desta lista do Github, que lista alguns arquivos comuns a serem ignorados. Os mais importantes, para responder a essa pergunta, seriam:
Os # são comentários e ajudarão você a organizar seu arquivo à medida que cresce.
Este artigo no Github também tem algumas idéias e diretrizes gerais.
Remova os arquivos já adicionados ao git
Por fim, você precisa remover realmente esses arquivos da DS Store do seu diretório.
Use este ótimo comando da resposta mais votada. Isso examinará todas as pastas do seu diretório e removerá esses arquivos do git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Pressione .gitignore até o Github
Última etapa, você precisa realmente confirmar seu arquivo .gitignore.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
fonte
Eu tive que mudar git-rm para git rm acima para fazê-lo funcionar:
fonte
exclua-os usando
git-rm
e adicione .DS_Store para.gitignore
para impedir que eles sejam adicionados novamente. Você também pode usar o blueharvest para impedir que eles sejam criados todos juntosfonte
Caso você queira remover os arquivos DS_Store para todas as pastas e subpastas:
No caso de DS_Store já confirmado:
Ignore-os por:
fonte
O seguinte funcionou melhor para mim. Arquivos incomparáveis manipulados e arquivos com modificações locais. Para referência, isso ocorreu em um sistema Mac 10.7 executando o git 1.7.4.4.
Encontre e remova:
Eu também ignoro globalmente .DS_Store em todos os repositórios, definindo um arquivo core.excludesfile global.
Primeiro, crie o arquivo (se ainda não existir):
Em seguida, adicione a seguinte linha e salve:
Agora configure o git para respeitar o arquivo globalmente:
fonte
Use este comando para remover os arquivos existentes:
Em seguida, adicione
.DS_Store
a.gitignore
fonte
Eu descobri que a seguinte linha do snipplr é melhor em limpar tudo
.DS_Store
, incluindo uma que possui modificações locais.--cached
opção, mantém o seu local,.DS_Store
pois ele será reproduzido de qualquer maneira.E, como mencionado acima, adicione
.DS_Store
ao arquivo .gitignore na raiz do seu projeto. Então não estará mais à sua vista (de repos).fonte
Estou um pouco atrasado para a festa, mas tenho uma boa resposta. Para remover os arquivos .DS_Store, use os seguintes comandos em uma janela do terminal, mas tenha muito cuidado ao excluir arquivos com 'find'. Usar um nome específico com a opção -name é uma das maneiras mais seguras de usá-lo:
Você pode deixar de lado o "-delete" se quiser simplesmente listá-los antes e depois. Isso vai garantir que eles se foram.
Com relação ao conselho ~ / .gitignore_global: tenha cuidado aqui. Você deseja colocar esse arquivo legal em .gitignore no nível superior de cada área de trabalho e enviá-lo, para que qualquer pessoa que clone seu repositório obtenha o benefício de seu uso.
fonte
Isso funcionará:
Exclui todos os arquivos cujos nomes terminam com
.DS_Store
, inclusive._.DS_Store
.fonte
"*.DS_Store"
, para que o asterisco seja passado aofind
invés de expandido pelo shell.Por alguma razão, nenhuma das opções acima funcionou no meu mac.
Minha solução é do terminal:
Em seguida, execute o seguinte comando:
fonte
fonte
Ao inicializar seu repositório, pule o comando git que contém
e não deve ser um problema.
fonte
Isso funcionou para mim, combinação de duas respostas acima:
fonte
Remova os arquivos ignorados:
(.DS_Store)
fonte
Existem algumas soluções para resolver esse problema. Para evitar a criação de arquivos .DS_Store, não use o OS X Finder para visualizar pastas. Uma maneira alternativa de visualizar pastas é usar a linha de comando do UNIX. Para remover os arquivos .DS_Store, um produto de terceiros chamado DS_Store Terminator pode ser usado. Para excluir os arquivos .DS_Store de todo o sistema, um comando shell UNIX pode ser usado. Iniciar terminal a partir de aplicativos: Utilitários No prompt do shell do UNIX, digite o seguinte comando do UNIX: sudo find / -name ".DS_Store" -thp -exec rm {} \; Quando uma senha for solicitada, digite a senha de administrador do Mac OS X.
Este comando é para localizar e remover todas as ocorrências de .DS_Store iniciando na raiz (/) do sistema de arquivos por toda a máquina. Para configurar esse comando para ser executado como uma tarefa agendada, siga as etapas abaixo: Inicie o Terminal a partir de aplicativos: Utilitários No prompt do shell do UNIX, digite o seguinte comando UNIX:
sudo crontab -e Quando for solicitada uma senha, digite a senha de administrador do Mac OS X. Uma vez no editor vi, pressione a letra I no teclado uma vez e digite o seguinte:
15 1 * * * localizador raiz / -name ".DS_Store" -thp -exec rm {} \;
Isso é chamado de entrada crontab, que tem o seguinte formato:
Minuto Hora DayOfMonth Month DayOfWeek Comando do usuário.
A entrada crontab significa que o comando será executado automaticamente pelo sistema às 1:15 da manhã todos os dias pela conta chamada root.
O comando começa a partir de encontrar todo o caminho até. Se o sistema não estiver executando, este comando não será executado.
Para salvar a entrada, pressione a tecla Esc uma vez e, simultaneamente, pressione Shift + z + z.
Nota: As informações na Etapa 4 são apenas para o editor vi.
fonte
adicione isso ao seu arquivo .gitignore
salve isso e faça commit
e agora você ignora isso para todos os seus commits
fonte
crie um
.gitignore
arquivo usando o comandotouch .gitignore
e adicione as seguintes linhas
salve o
.gitignore
arquivo e envie-o ao seu repositório git.fonte
A melhor maneira de se livrar desse arquivo para sempre e nunca mais se preocupar com isso é
crie um arquivo .gitignore global:
eco .DS_Store >> ~ / .gitignore_global
E informe ao git que você deseja usar este arquivo para todos os seus repositórios:
git config --global core.excludesfile ~ / .gitignore_global E é isso! .DS_Store está fora do seu caminho.
fonte
Não há necessidade de remover
.DS_STORE
localmenteBasta adicioná-lo ao
.gitignore
arquivoComandos
nano .gitignore
.DS_Store
e cliqueCTRL+X > y > Hit Return
git status
Para dar uma última olhada em suas alteraçõesgit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master
fonte