Как я могу удалить эти раздражающие .DS_Store
файлы Mac OS X из репозитория Git?
Как я могу удалить эти раздражающие .DS_Store
файлы Mac OS X из репозитория 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!'
-exec
запускается git-rm
один раз для каждого файла .DS_Store, а xargs
все пути помещаются в одну командную строку. В основном я предпочитаю, xargs
потому что мне не нужно беспокоиться о том, чтобы избежать множества специальных символов.
.DS_Store
к .gitignore
работе рекурсивно? То есть он будет игнорировать some/level/of/folders/.DS_Store
?
Комбинируя ответы 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
~/.gitignore
файла глобальных исключений является проблемой . Есть файлы, которые я хочу исключить из моего домашнего каталога, которые я не хочу игнорировать глобально. Я использую ~/.gitexcludes
вместо этого через ту же директиву:core.excludesfile
Лучшее решение этой проблемы - глобально игнорировать эти файлы из всех репозиториев 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>»
Удалить существующие файлы:
find . -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 removed.'
nano .gitignore
создает файл, если его нет, эта команда должна быть выполнена из корневой папки проекта
Ответ, получивший наибольшее количество голосов, потрясающий, но помогая новичкам, таким как я, вот как создать файл .gitignore, отредактировать его, сохранить его, удалить файлы, которые вы, возможно, уже добавили в git, а затем отправить файл в Github.
Создайте файл .gitignore
Чтобы создать файл .gitignore, вы можете просто touch
файл, который создает пустой файл с указанным именем. Мы хотим создать файл с именем .gitignore, чтобы мы могли использовать команду:
touch .gitignore
Игнорировать файлы
Теперь вам нужно добавить строку, которая говорит git игнорировать файлы DS Store в вашем .gitignore. Вы можете использовать нано-редактор, чтобы сделать это.
nano .gitignore
Nano хорош тем, что содержит инструкции о том, как из него выбраться. ( Ctrl- Oсохранить, Ctrl- Xвыйти)
Скопируйте и вставьте некоторые идеи из этого списка Github, в котором перечислены некоторые общие файлы, которые следует игнорировать. Наиболее важными, чтобы ответить на этот вопрос, были бы:
# OS generated files #
######################
.DS_Store
.DS_Store?
# Являются комментариями и помогут вам организовать ваш файл по мере его роста.
Эта статья на Github также имеет некоторые общие идеи и рекомендации.
Удалите файлы, уже добавленные в git
Наконец, вам нужно удалить эти файлы из DS Store из вашего каталога.
Воспользуйтесь этой замечательной командой сверху проголосовавшего ответа. Это позволит просмотреть все папки в вашем каталоге и удалить эти файлы из git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Нажмите .gitignore до Github
Последний шаг, вам нужно зафиксировать ваш файл .gitignore.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
удалите их с помощью git-rm
, а затем добавьте .DS_Store, .gitignore
чтобы остановить их добавление снова. Вы также можете использовать blueharvest, чтобы они не создавались вместе.
Если вы хотите удалить файлы 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
.
"*.DS_Store"
, чтобы звездочка передавалась, find
а не расширялась оболочкой.
По какой-то причине ничего из вышеперечисленного не работает на моем Mac.
Мое решение от терминала запустить:
rm .DS_Store
Затем выполните следующую команду:
git pull origin master
Это сработало для меня, комбинируя два ответа сверху:
Лучший способ избавиться от этого файла навсегда и больше никогда не беспокоиться об этом
создайте глобальный файл .gitignore:
echo .DS_Store >> ~ / .gitignore_global
И дайте git знать, что вы хотите использовать этот файл для всех ваших репозиториев:
git config --global core.excludesfile ~ / .gitignore_global И это все! .DS_Store вне вашего пути.
Есть несколько решений для решения этой проблемы. Чтобы избежать создания файлов .DS_Store, не используйте OS X Finder для просмотра папок. Альтернативный способ просмотра папок - использование командной строки UNIX. Для удаления файлов .DS_Store можно использовать сторонний продукт под названием DS_Store Terminator. Чтобы удалить файлы .DS_Store из всей системы, можно использовать команду оболочки UNIX. Запустите Terminal из Applications: Utilities. В командной строке 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, которая имеет следующий формат:
Минутный час DayOfMonth Month DayOfWeek Пользовательская команда.
Запись crontab означает, что команда будет автоматически выполняться системой в 1:15 каждый день под учетной записью root.
Команда начинается с поиска до. Если система не работает, эта команда не будет выполнена.
Чтобы сохранить запись, нажмите клавишу Esc один раз, затем одновременно нажмите Shift + z + z.
Примечание. Информация на шаге 4 предназначена только для редактора vi.
добавьте это в ваш файл .gitignore
#Ignore folder mac
.DS_Store
сохранить это и сделать коммит
git add -A
git commit -m "ignore .DS_Store"
и теперь вы игнорируете это для всех ваших коммитов
Нет необходимости удалять .DS_STORE
локально
Просто добавьте его в .gitignore
файл
Файл .gitignore - это просто текстовый файл, который сообщает Git, какие файлы или папки следует игнорировать в проекте.
команды
nano .gitignore
.DS_Store
Затем нажмитеCTRL+X > y > Hit Return
git status
Чтобы в последний раз взглянуть на ваши измененияgit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master