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

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

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_global

Edit:

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


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

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

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

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


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

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

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

git rm --cached -f *.DS_Store

откройте терминал и введите "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. Enter для сохранения файла

  7. git add .gitignore

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


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


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

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

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

touch .gitignore

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

теперь вам нужно добавить строку, которая говорит git игнорировать файлы магазина DS к вашему .гитюдного. Для этого можно использовать редактор nano.

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

пуш .gitignore до 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_Store to .gitignore


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

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

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

относительно~/.gitignore_global советы: быть осторожнее здесь. Ты хочешь поместить в него этот хороший файл .гитюдного в верхний уровень каждого workarea и совершить его, так что любой, кто клонирует ваше РЕПО получит выгоду от его использования.


по какой-то причине ни один из вышеперечисленных не работал на моем mac.

мое решение от terminal run

       rm .DS_Store

затем

        git pull origin master

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

-u

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


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

  • $ 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 " - глубина-exec RM {} \;

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

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

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

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

для сохранения записи нажмите клавишу 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