Как я могу удалить эти надоедливые файлы Mac OS X .DS_Store
из репозитория Git?
Удалить существующие файлы из хранилища:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Добавьте строку
.DS_Store
в файл .gitignore
, который можно найти на верхнем уровне вашего репозитория (или создать, если его там еще нет). Вы можете сделать это легко с помощью этой команды в верхнем каталоге
echo .DS_Store >> .gitignore
Затем
git add .gitignore
git commit -m '.DS_Store banished!'
Объединение ответов benzado и webmat, обновление с помощью git rm
, отсутствие сбоев в найденных файлах, которые не находятся в репо, и превращение их в пастеризуемый для любого пользователя:
# 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
Лучшее решение для решения этой проблемы - игнорировать эти файлы на глобальном уровне из всех репозиториев git в вашей системе. Это можно сделать, создав глобальный файл gitignore, такой как:
vi ~/.gitignore_global
Добавление правил игнорирования файлов, таких как:
# 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
Теперь добавьте этот файл в глобальную конфигурацию git:
git config --global core.excludesfile ~/.gitignore_global
Редактировать:
Удалены иконы, так как они могут потребоваться в качестве активов приложения.
В некоторых ситуациях вы также можете игнорировать некоторые файлы по всему миру. Для меня .DS_Store является одним из них. Вот как:
git config --global core.excludesfile /Users/mat/.gitignore
(Или любой файл на ваш выбор)
Затем отредактируйте файл, как у репо .gitignore. Обратите внимание, что я думаю, что вы должны использовать абсолютный путь.
Если вы не можете удалить файлы, потому что они имеют изменения поэтапного использования:
git rm --cached -f *.DS_Store
Откройте терминал и введите «cd < ProjectPath >»
Удалить существующие файлы:
найти . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Добавьте это .DS_Store
введите "ctrl + x"
Введите "у"
Введите, чтобы сохранить файл
git add .gitignore
git commit -m '.DS_Store удален.«
Мне пришлось изменить git-rm на git rm в приведенном выше, чтобы заставить его работать:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
Ответ с наибольшим голосованием потрясающий, но помогая новичкам, таким как я, вот как создать файл .gitignore, отредактировать его, сохранить его, удалить файлы, которые вы, возможно, уже добавили в git, а затем перенести файл в Github.
Создать файл .gitignore
Чтобы создать файл .gitignore, вы можете просто прикоснуться
к файлу, который создает пустой файл с указанным именем. Мы хотим создать файл с именем .gitignore, чтобы мы могли использовать команду:
touch .gitignore
Игнорировать файлы
Теперь вам нужно добавить строку, которая говорит git игнорировать файлы DS Store в вашем .gitignore. Вы можете использовать нано редактор, чтобы сделать это.
nano .gitignore
Нано хорош, потому что он включает в себя инструкции о том, как выбраться из него. ( Ctrl < / kbd > - O < / kbd > сохранить, / kbd > - / kbd > выйти)
Скопируйте и вставьте некоторые идеи из этого Github gist, в котором перечислены некоторые распространенные файлы, которые следует игнорировать. Наиболее важными, чтобы ответить на этот вопрос, будут:
# OS generated files #
######################
.DS_Store
.DS_Store?
Эта статья Github также имеет некоторые общие идеи и рекомендации.
Удаление файлов, уже добавленных в git
Наконец, вам нужно удалить эти файлы DS Store из вашего каталога.
Используйте эту замечательную команду из верха проголосовавшего ответа. Это пройдет через все папки в вашем каталоге и удалит эти файлы из git.
найти . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Push .gitignore до Github
На последнем шаге вам нужно фактически зафиксировать файл .gitignore.
git status
git add .gitignore
git commit -m '.DS_Store изгнан!«
удалите их, используя git-rm
, а затем добавьте .DS_Store в .gitignore
, чтобы они снова не добавлялись. Вы также можете использовать blueharvest, чтобы остановить их создание вместе
Используйте эту команду, чтобы удалить существующие файлы:
find . -name '*.DS_Store' -type f -delete
Затем добавьте .DS_Store
в .gitignore
Если вы хотите удалить файлы DS_Store в каждую папку и подпапку: & Лт; hr > В случае уже совершенного DS_Store:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Игнорируйте их по:
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
Следующее работало лучше всего для меня. Обрабатываются непревзойденные файлы и файлы с локальными модификациями. Для справки, это было в системе Mac 10.7 с git 1.7.4.4.
Найти и удалить:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
Я также глобально игнорирую .DS_Store во всех репозиториях, устанавливая глобальный core.excludesfile.
Сначала создайте файл (если он еще не существует):
touch ~/.gitignore
Затем добавьте следующую строку и сохраните:
.DS_Store
Теперь настройте git, чтобы уважать файл глобально:
git config --global core.excludesfile ~/.gitignore
Я обнаружил, что следующая строка из snipplr лучше всего подходит для очистки всех .DS_Store
, включая строку, которая имеет локальные модификации.
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
Опция --cached
, сохраняет ваш локальный .DS_Store
, так как он все равно будет воспроизведен.
И, как упоминалось выше, добавьте .DS_Store
в файл .gitignore в корне вашего проекта. Тогда это больше не будет в вашем поле зрения (репо).
Я немного опаздываю на вечеринку, но у меня есть хороший ответ. Чтобы удалить файлы .DS_Store, используйте следующие команды из окна терминала, но будьте очень осторожны при удалении файлов с помощью «find». Использование определенного имени с параметром -name является одним из более безопасных способов его использования:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Вы можете оставить «-delete», если хотите просто перечислить их до и после. Это убедит вас, что они ушли.
Что касается совета ~/.gitignore_global: будьте осторожны здесь. Вы хотите поместить этот хороший файл в .gitignore внутри верхний уровень каждой рабочей области и зафиксируйте ее, чтобы любой, кто клонирует ваше репо, получил выгоду от его использования.
Это будет работать:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
Удаляет все файлы, имена которых заканчиваются на .DS_Store
, включая ._. DS_Store
.
По какой-то причине ничего из вышеперечисленного не сработало на моем Mac.
Мое решение от терминала запуска:
rm .DS_Store
Затем выполните следующую команду:
git pull origin master
Это сработало для меня, комбинация двух ответов сверху:
добавьте это в свой файл .gitignore
#Ignore folder mac
.DS_Store
сохранить это и сделать коммит
git add -A
git commit -m "ignore .DS_Store"
и теперь вы игнорируете это для всех своих коммитов
Есть несколько решений для решения этой проблемы. Чтобы избежать создания файлов .DS_Store, не используйте OS X Finder для просмотра папок. Альтернативный способ просмотра папок - использовать командную строку UNIX. Для удаления файлов .DS_Store можно использовать сторонний продукт под названием DS_Store Terminator. Для удаления файлов .DS_Store из всей системы можно использовать команду оболочки UNIX. Запуск терминала из приложений: утилиты В командной строке оболочки UNIX введите следующую команду UNIX: sudo find / -name ".DS_Store" -depth -exec rm {{{{{}}}}} \; При появлении пароля введите пароль администратора Mac OS X.
Эта команда предназначена для поиска и удаления всех вхождений .DS_Store, начиная с корня (/) файловой системы через всю машину. Чтобы настроить эту команду для выполнения в качестве запланированной задачи, выполните следующие действия: Запуск терминала из приложений: утилиты В командной строке оболочки UNIX введите следующую команду UNIX:
sudo crontab -e При появлении пароля введите пароль администратора Mac OS X. Однажды в редакторе vi нажмите букву I на клавиатуре один раз и введите следующее:
15 1 * root find / -name ".DS_Store" -depth -exec rm {{{{{}}}}} \ ;
Это называется crontab entry, который имеет следующий формат:
Минутный час DayOfMonth Month DayOfWeek Пользовательское командование.
Запись crontab означает, что команда будет выполняться системой автоматически в 1:15 каждый день учетной записью, называемой root.
Команда начинается с поиска до . Если система не работает, эта команда не будет выполнена.
Чтобы сохранить запись, нажмите клавишу Esc один раз, затем одновременно нажмите Shift + z + z.
Примечание. Информация на шаге 4 предназначена только для редактора vi.