22 ответов:
удалить существующие файлы из репозитория:
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_globalEdit:
удалены значки, поскольку они могут потребоваться для фиксации в качестве активов приложения.
в некоторых ситуациях вы также можете игнорировать некоторые файлы по всему миру. Для меня. ,DS_Store является одним из них. Вот как:
git config --global core.excludesfile /Users/mat/.gitignore(или любой файл по вашему выбору)
затем отредактируйте файл так как РЕПО .gitignore. Обратите внимание, что я думаю, что вы должны использовать абсолютный путь.
мне пришлось изменить git-rm на git rm в приведенном выше, чтобы заставить его работать:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
Если вы не можете удалить файлы, потому что они имеют изменения в постановке использовать:
git rm --cached -f *.DS_Store
откройте терминал и введите " cd "
удалить существующие файлы:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignoreдобавить
.DS_Storeвведите "ctrl + x"
тип "y"
Enter, чтобы сохранить файл
git add .gitignore
git commit -m '.DS_Store removed.'
удалить их с помощью
git-rm, а затем добавить .DS_Store to.gitignoreчтобы остановить их снова добавил. Вы также можете использовать blueharvest чтобы остановить их создание все вместе
топ проголосовал ответ является удивительным ,но помогая новичкам, как я, вот как создать.gitignore file, отредактируйте его, сохраните, удалите файлы, которые вы, возможно, уже добавили в git, а затем нажмите файл на Github.
создать .gitignore file
создать .gitignore файл, вы можете просто
touchфайл, который создает пустой файл с указанным именем. Мы хотим создать файл с именем .gitignore так что мы можем использовать команда:
touch .gitignoreигнорировать файлы
теперь вам нужно добавить строку, которая говорит git игнорировать файлы DS Store для вашего .gitignore. Для этого можно использовать редактор nano.
nano .gitignoreNano приятно, потому что он включает в себя Инструкции о том, как выйти из него. (Ctrl -O сохранить Ctrl -X выход)
скопируйте и вставьте некоторые из идеи от этого Github gist в котором перечислены некоторые общие файлы в игнор. Наиболее важными из них, чтобы ответить на этот вопрос, были бы:
# OS generated files # ###################### .DS_Store .DS_Store?# комментарии, и поможет вам организовать ваш файл, как он растет.
этой статья Github также имеет некоторые общие идеи и рекомендации.
удалите файлы, уже добавленные в git
наконец, вам нужно на самом деле удалить эти файлы DS Store из вашего каталога.
используйте эту замечательную команду сверху проголосовал ответ. Это будет проходить через все папки в вашу директорию и удалить эти файлы из Git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatchпуш .пример на GitHub
последний шаг, вам нужно на самом деле совершают .файла.gitignore
git status
git add .gitignore
git commit -m '.DS_Store banished!'
следующее работало лучше всего для меня. Обрабатываются несопоставимые файлы, а также файлы с локальными модификациями. Для справки, это было на Mac 10.7 системы под управлением git 1.7.4.4.
найти и удалить:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -fЯ также глобально игнорирую .DS_Store во всех репозиториях, установив глобальное ядро.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-- кэшированная опция, сохраняет ваш локальный .DS_Store так как он будет воспроизведен в любом случае.
и так же, как упоминалось выше, добавить .DS_Store to .gitignore файл в корне вашего проекта. Тогда он больше не будет в вашем поле зрения (РЕПО).
используйте эту команду для удаления существующих файлов:
find . -name '*.DS_Store' -type f -deleteзатем добавить
.DS_Storeto.gitignore
Я немного опоздала на вечеринку, но у меня есть хороший ответ. Чтобы удалить .Файлы DS_Store, используйте следующие команды из окна терминала, но будьте очень осторожны, удаляя файлы с помощью "find". Использование определенного имени с опцией-name является одним из более безопасных способов его использования:
cd directory/above/affected/workareas find . -name .DS_Store -deleteвы можете убрать "-удалить", если вы хотите просто перечислить их до и после. Это убедит вас, что они ушли.
что касается ~/.gitignore_global совет: быть осторожнее здесь. Вы хотите разместить этот хороший файл .гитюдного в верхний уровень каждой рабочей области и зафиксируйте его, так что любой, кто клонирует ваше РЕПО, получит выгоду от его использования.
по какой-то причине никто из вышеперечисленных не работал на моем mac.
мое решение от терминала run
rm .DS_Storeзатем
git pull origin master
Это сработало для меня, комбо из двух ответов сверху:
- $ git rm --cached-f *.DS_Store
- $ коммит в git'е -м фильтр-ветвь "--индекс-фильтр ГИТ РМ --кэшированные -- игнорировать-не совпадать .DS_Store"
- $ git push origin master -- force
Это будет работать:
find . -name "*.DS_Store" -type f -exec git-rm {} \;Он удаляет все файлы, имена которых заканчиваются на
.DS_Store, включая._.DS_Store.
в случае, если вы хотите удалить файлы DS_Store в каждую папку и подпапку:
В случае уже совершенного 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
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store" $ git push origin master --force
есть несколько решений для решения этой проблемы. Чтобы избежать создания .Файлы DS_Store, не используйте OS X Finder для просмотра папок. Альтернативным способом просмотра папок является использование командной строки UNIX. Чтобы удалить .Файлы DS_Store можно использовать сторонний продукт под названием Ds_store Terminator. Удалить .Файлы DS_Store из всей системы можно использовать команду оболочки UNIX. Запуск терминала из приложений: утилиты В командной строке оболочки UNIX введите следующую команду UNIX: команда sudo найти / -имя ".DS_Store " - глубина-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 Команды Пользователя.
запись crontab означает, что команда будет выполнена системой автоматически в 1: 15 утра каждый день на счету, корнем.
команда начинается с find all the way to . Если система не работает эта команда не будет выполняться.
для сохранения записи нажмите клавишу Esc один раз, затем одновременно нажмите Shift + z+ z.
Примечание: информация в шаге 4 предназначена только для редактора vi.
добавьте это в ваш файл .gitignore
#Ignore folder mac .DS_Storeсохраните это и сделайте commit
git add -A git commit -m "ignore .DS_Store"и теперь вы игнорируете эту процедуру для всех ваших коммитов
удалить игнорируемые файлы:
(.DS_Store)
$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Comments