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

Как удалить эти раздражающие файлы Mac OS X .DS_Store из репозитория Git?

1020
20 сент. '08 в 12:15
источник поделиться
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!'
1982
20 сент. '08 в 14:18
источник

Связанные вопросы


Похожие вопросы

Сочетание ответов 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
218
15 июля '11 в 2:42
источник

Лучшим решением для решения этой проблемы является глобальное игнорирование этих файлов из всех репозиций git в вашей системе. Это можно сделать, создав глобальный файл gitignore, например:

vi ~/.gitignore_global

Добавление правил для игнорирования таких файлов, как:

# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so

# Packages #
############
# it 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 config:

git config --global core.excludesfile ~/.gitignore_global

Edit:

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

129
13 июля '13 в 11:03
источник

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

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

(или любой файл по вашему выбору)

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

53
20 сент. '08 в 16:08
источник

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

git rm --cached -f *.DS_Store
14
12 мая '14 в 3:21
источник

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

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
13
20 июля '10 в 17:05
источник

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

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

  • nano .gitignore

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

  • введите "ctrl + x"

  • Введите "y"

  • Введите для сохранения файла

  • git add .gitignore

  • git commit -m '.DS_Store removed.'

11
24 нояб. '16 в 12:30
источник

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

9
31 окт. '17 в 9:41
источник

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

8
20 сент. '08 в 12:20
источник

Используйте эту команду для удаления существующих файлов:

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

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

5
07 дек. '16 в 10:44
источник

Следующее работало лучше для меня. Обрабатываются непревзойденные файлы и файлы с локальными изменениями. Для справки это было в системе 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
5
28 сент. '11 в 3:52
источник

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

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

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

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

4
21 июля '09 в 22:17
источник

Если вы хотите удалить файлы 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
4
23 апр. '18 в 0:09
источник

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

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

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

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

2
25 дек. '17 в 9:00
источник

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

-u

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

1
30 апр. '14 в 18:08
источник

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

  • $git rm --cached -f *.DS_Store
  • $git commit -m "фильтр-ветвь -index-filter 'git rm -cached --ignore-unmatch.DS_Store "
  • $git push origin master --force
1
28 июля '15 в 19:16
источник

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

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

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

1
20 сент. '08 в 12:16
источник

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

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

rm .DS_Store

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

git pull origin master
1
10 апр. '13 в 12:06
источник

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

#Ignore folder mac
.DS_Store

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

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

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

0
17 мая '16 в 20:16
источник

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

15 1 * * * root find/-name ".DS_Store" -depth -exec rm {} \;

Это называется записью crontab, которая имеет следующий формат:

Минутный час DayOfMonth Month Пользовательская команда DayOfWeek.

Запись crontab означает, что команда будет выполняться системой автоматически в 1:15 утра каждый день с учетной записью с именем root.

Команда начинается с поиска всего пути. Если система не запущена, эта команда не будет выполнена.

Чтобы сохранить запись, нажмите клавишу Esc один раз, затем одновременно нажмите Shift + z + z.

Примечание. Информация на шаге 4 предназначена только для редактора vi.

0
01 авг. '12 в 12:54
источник

Удалить игнорируемые файлы:

(.DS_Store)

$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
0
02 марта '18 в 13:10
источник
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
0
19 окт. '11 в 4:01
источник

Посмотрите другие вопросы по меткам или Задайте вопрос