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

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

Ответы [ 22 ]

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

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

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!'
228 голосов
/ 15 июля 2011

Объединение ответов 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
133 голосов
/ 13 июля 2013

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

Edit:

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

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

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

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

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

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

19 голосов
/ 12 мая 2014

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

git rm --cached -f *.DS_Store
15 голосов
/ 24 ноября 2016

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

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

  2. nano .gitignore

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

  4. тип "ctrl + x"

  5. Тип "y"

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

  7. git add .gitignore

  8. git commit -m '.DS_Store removed.'

15 голосов
/ 20 июля 2010

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

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
13 голосов
/ 31 октября 2017

Ответ с наибольшим количеством голосов - это круто, но помогая новичкам, таким как я, вот как создать файл .gitignore, отредактировать его, сохранить его, удалить файлы, которые вы, возможно, уже добавили в git, а затем отправить файл в Github.

Создать файл .gitignore

Чтобы создать файл .gitignore, вы можете просто touch файл, который создает пустой файл с указанным именем. Мы хотим создать файл с именем .gitignore, чтобы мы могли использовать команду:

touch .gitignore

Игнорировать файлы

Теперь вам нужно добавить строку, которая говорит git игнорировать файлы DS Store в ваш .gitignore. Вы можете использовать нано-редактор, чтобы сделать это.

nano .gitignore

Nano хорош, потому что он содержит инструкции о том, как выйти из него. ( 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

Push .gitignore до Github

Последний шаг, вам нужно зафиксировать ваш файл .gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

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

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

8 голосов
/ 07 декабря 2016

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

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

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

...