.gitignore все файлы .DS_Store в каждой папке и вложенной папке

Я добавил .DS_Store в файл .gitignore, но кажется, что он игнорирует только .DS_Store в корневом каталоге, а не в каждой папке и вложенной папке.

Как это исправить?

Ответ 1

Я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что в некоторых более ранних транзакциях вы случайно добавили файлы .DS_Store в репозиторий. Конечно, как только файл будет отслеживаться в вашем репозитории, он будет продолжать отслеживаться, даже если он соответствует записи в соответствующем файле .gitignore.

Вам нужно вручную удалить файлы .DS_Store, которые были добавлены в ваш репозиторий. Вы можете использовать git rm --cached .DS_Store. После удаления, git должен игнорировать его. В корневом файле .gitignore вам понадобится следующая строка: .DS_Store. Не забывайте о периоде!

git rm --cached .DS_Store удаляет только .DS_Store из текущего каталога. Вы можете использовать find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch, чтобы удалить все .DS_Stores из репозитория.

Контекст Felt: поскольку вы, вероятно, никогда не хотите включать файлы .DS_Store, создайте глобальное правило. Сначала создайте глобальный файл .gitignore где-нибудь, например. echo .DS_Store >> ~/.gitignore_global. Теперь скажите git использовать его для всех репозиториев: git config --global core.excludesfile ~/.gitignore_global.

Эта страница помогла мне ответить на ваш вопрос: https://help.github.com/articles/ignoring-files

Ответ 2

Добавить **/.DS_Store в .gitignore для вспомогательного каталога


Если .DS_Store уже выполнено:

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

Чтобы игнорировать их во всех репозиториях: (иногда это называлось ._.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

Ответ 3

Ваш .gitignore файл должен выглядеть следующим образом:

# Ignore Mac DS_Store files
.DS_Store

Пока вы не включаете косую черту, оно сопоставляется с именем файла во всех каталогах. (от здесь)

Ответ 4

Если .DS_Store никогда не добавлялось в репозиторий git, просто добавьте его в свой .gitignore файл.

Если у вас его нет, создайте файл с именем

.gitignore

В корневом каталоге вашего приложения и просто напишите

**/.DS_Store

В нем. Это никогда не позволит файлу .DS_Store проникнуть в ваш git.

Но если он уже существует, напишите в терминале:

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

затем скопируйте и нажмите изменения, чтобы удалить .DS_Store из удаленного репо:

git commit -m "Remove .DS_Store from everywhere"

git push origin master

И теперь добавьте .DS_Store в свой .gitignore файл, а затем снова зафиксируйте и нажмите с двумя последними фрагментами кода (git commit..., git push...)

Ответ 5

Шаг 1, удалите все файлы *.DS_store. Можно запустить

git rm -f *.DS_Store

но имейте в виду, что rm -f может быть немного опасным, если у вас есть опечатка! Шаг второй: добавьте

*.DS_Store
.DS_Store

до .gitignore. Это сработало для меня!

Ответ 6

Вы также можете добавить флаг --cached в ответ auco для поддержки локальных файлов .DS_store, как упоминал Эдвард Ньюэлл в своем первоначальном ответе. Измененная команда выглядит следующим образом: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch..cheers и спасибо!

Ответ 7

Добавьте *.DS_Store в ваш .gitignore файл. Это отлично работает для меня.

Ответ 8

Шаг: 1) Удалите существующие файлы с помощью этой команды

найти. -name.DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Шаг: 2) Добавьте файл .DS_Store в свой .gitignore файл

Шаг: 3) Зафиксируйте изменения в .gitignore  git добавить .gitignore  git commit -m "удален .DS_Store"