Как я могу удалить файлы .DS_Store из репозитория Git?

Как я могу удалить эти надоедливые файлы Mac OS X .DS_Store из репозитория Git?

Комментарии к вопросу (2)
Решение

Удалить существующие файлы из хранилища:

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!'
Комментарии (23)

Объединение ответов 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
Комментарии (1)

Лучшее решение для решения этой проблемы - игнорировать эти файлы на глобальном уровне из всех репозиториев 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

Редактировать:

Удалены иконы, так как они могут потребоваться в качестве активов приложения.

Комментарии (3)

В некоторых ситуациях вы также можете игнорировать некоторые файлы по всему миру. Для меня .DS_Store является одним из них. Вот как:

git config --global core.excludesfile /Users/mat/.gitignore

(Или любой файл на ваш выбор)

Затем отредактируйте файл, как у репо .gitignore. Обратите внимание, что я думаю, что вы должны использовать абсолютный путь.

Комментарии (0)

Если вы не можете удалить файлы, потому что они имеют изменения поэтапного использования:

git rm --cached -f *.DS_Store
Комментарии (0)

Откройте терминал и введите «cd < ProjectPath >»

  1. Удалить существующие файлы: найти . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Добавьте это .DS_Store

  4. введите "ctrl + x"

  5. Введите "у"

  6. Введите, чтобы сохранить файл

  7. git add .gitignore

  8. git commit -m '.DS_Store удален.«

Комментарии (1)

Мне пришлось изменить git-rm на git rm в приведенном выше, чтобы заставить его работать:

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
Комментарии (0)

Ответ с наибольшим голосованием потрясающий, но помогая новичкам, таким как я, вот как создать файл .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 изгнан!«

Комментарии (1)

удалите их, используя git-rm, а затем добавьте .DS_Store в .gitignore, чтобы они снова не добавлялись. Вы также можете использовать blueharvest, чтобы остановить их создание вместе

Комментарии (0)

Используйте эту команду, чтобы удалить существующие файлы:

find . -name '*.DS_Store' -type f -delete

Затем добавьте .DS_Store в .gitignore

Комментарии (0)

Если вы хотите удалить файлы 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
Комментарии (0)

Следующее работало лучше всего для меня. Обрабатываются непревзойденные файлы и файлы с локальными модификациями. Для справки, это было в системе 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
Комментарии (0)

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

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print

Опция --cached, сохраняет ваш локальный .DS_Store, так как он все равно будет воспроизведен.

И, как упоминалось выше, добавьте .DS_Store в файл .gitignore в корне вашего проекта. Тогда это больше не будет в вашем поле зрения (репо).

Комментарии (0)

Я немного опаздываю на вечеринку, но у меня есть хороший ответ. Чтобы удалить файлы .DS_Store, используйте следующие команды из окна терминала, но будьте очень осторожны при удалении файлов с помощью «find». Использование определенного имени с параметром -name является одним из более безопасных способов его использования:

cd directory/above/affected/workareas
find . -name .DS_Store -delete

Вы можете оставить «-delete», если хотите просто перечислить их до и после. Это убедит вас, что они ушли.

Что касается совета ~/.gitignore_global: будьте осторожны здесь. Вы хотите поместить этот хороший файл в .gitignore внутри верхний уровень каждой рабочей области и зафиксируйте ее, чтобы любой, кто клонирует ваше репо, получил выгоду от его использования.

Комментарии (0)

Это будет работать:

find . -name "*.DS_Store" -type f -exec git-rm {} \;

Удаляет все файлы, имена которых заканчиваются на .DS_Store, включая ._. DS_Store.

Комментарии (3)

По какой-то причине ничего из вышеперечисленного не сработало на моем Mac.

Мое решение от терминала запуска:

rm .DS_Store

Затем выполните следующую команду:

git pull origin master
Комментарии (0)

При инициализации вашего репозитория пропустите содержащуюся команду git

-u

и это не должно быть проблемой.

Комментарии (1)

Это сработало для меня, комбинация двух ответов сверху:

  • $ git rm --cached -f * .DS_Store
  • $ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store "
  • $ git push origin master --force
Комментарии (0)

добавьте это в свой файл .gitignore

#Ignore folder mac
.DS_Store

сохранить это и сделать коммит

git add -A
git commit -m "ignore .DS_Store"

и теперь вы игнорируете это для всех своих коммитов

Комментарии (0)

Есть несколько решений для решения этой проблемы. Чтобы избежать создания файлов .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.

Комментарии (0)