Как я могу удалить файлы .DS_Store из Git-репозитория? - PullRequest
1073 голосов
/ 20 сентября 2008

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

Ответы [ 22 ]

7 голосов
/ 28 сентября 2011

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

Если вы хотите удалить файлы 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
6 голосов
/ 21 июля 2009

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

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
Параметр

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

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

4 голосов
/ 20 сентября 2008

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

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

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

4 голосов
/ 25 декабря 2017

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

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

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

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

4 голосов
/ 10 апреля 2013

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

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

rm .DS_Store

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

git pull origin master
3 голосов
/ 28 июля 2015

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

  • $ 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
3 голосов
/ 30 апреля 2014

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

-u

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

2 голосов
/ 02 марта 2018

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

(. DS_Store)

$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
2 голосов
/ 19 октября 2011
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
...