Як я можу видалити такі дратівливі .DS_Store
файли Mac OS X із сховища Git?
Як я можу видалити такі дратівливі .DS_Store
файли Mac OS X із сховища Git?
Відповіді:
Видаліть наявні файли із сховища:
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!'
-exec
буде запущено git-rm
один раз для кожного .DS_Store файлу, при цьому xargs
буде розміщено всі шляхи в одному командному рядку. В основному я віддаю перевагу xargs
тому, що мені не потрібно турбуватися про те, щоб уникнути багатьох спеціальних персонажів.
.DS_Store
до .gitignore
роботи рекурсивно? Тобто, це буде ігнорувати some/level/of/folders/.DS_Store
?
Поєднуючи відповіді 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
~/.gitignore
оскільки мій глобальний файл виключає біль. Є файли, які я хочу виключити зі свого домашнього каталогу, які я не хочу ігнорувати в усьому світі. Я використовую ~/.gitexcludes
натомість через ту саму директиву:core.excludesfile
Найкраще рішення для вирішення цього питання - глобально ігнорувати ці файли з усіх git repos у вашій системі. Це можна зробити, створивши глобальний файл 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
Редагувати:
Видалено піктограми, оскільки вони, можливо, знадобляться як додатки.
У деяких ситуаціях ви також можете ігнорувати деякі файли в усьому світі. Для мене .DS_Store - одна з них. Ось як:
git config --global core.excludesfile /Users/mat/.gitignore
(Або будь-який файл на ваш вибір)
Потім відредагуйте файл так само, як репортаж .gitignore. Зауважте, що я думаю, вам доведеться використовувати абсолютний шлях.
Якщо ви не можете видалити файли, оскільки в них є зміни, які застосовуються поетапно:
git rm --cached -f *.DS_Store
Відкрийте термінал і введіть "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.'
nano .gitignore
створює файл, якщо його немає, цю команду слід виконати з кореневої папки проекту
Відповідь вгорі - це приголомшливо, але допомагаючи новобранцям, як я, ось як створити файл .gitignore, відредагувати його, зберегти його, видалити файли, які, можливо, ви вже додали до git, а потім натисніть файл на Github.
Створіть файл .gitignore
Щоб створити .gitignore файл, ви можете просто touch
файл, який створює порожній файл із вказаним іменем. Ми хочемо створити файл під назвою .gitignore, щоб ми могли використовувати команду:
touch .gitignore
Ігноруйте файли
Тепер ви повинні додати рядок, який повідомляє git ігнорувати файли DS Store до вашої .gitignore. Для цього можна скористатися наноредактором.
nano .gitignore
Нано приємно, оскільки містить інструкції, як з нього вийти. ( 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!'
видаліть їх за допомогою git-rm
, а потім додайте .DS_Store, .gitignore
щоб зупинити їх додавання знову. Ви також можете використовувати блакитний урожай, щоб зупинити їх створення всі разом
Якщо ви хочете видалити файли 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
Наступне працювало найкраще для мене. Обробляються незрівнянні файли та файли з локальними модифікаціями. Для довідки, це було в системі 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
Я виявив, що наступний рядок від snipplr найкраще витирає всі .DS_Store
, включаючи той, який має локальні модифікації.
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
варіант, зберігає ваш локальний, .DS_Store
оскільки він все одно буде відтворений.
І так само, як згадувалося все вище, додайте .DS_Store
до .gitignore файл у корені вашого проекту. Тоді його вже не буде перед вами (репост).
Я трохи запізнююся на вечірку, але в мене є хороша відповідь. Щоб видалити .DS_Store файли, використовуйте наступні команди з вікна терміналу, але будьте дуже обережні, видаляючи файли за допомогою "find". Використання конкретного імені за допомогою параметра -name є одним із безпечніших способів його використання:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Ви можете залишити "-delete", якщо хочете просто перерахувати їх до і після. Це заспокоїть вас, що вони пішли.
Що стосується ~ / .gitignore_global поради: будьте уважні тут. Ви хочете розмістити цей приємний файл у .gitignore в межах верхнього рівня кожного робочого місця та зробити його так, щоб кожен, хто клонував ваше репо, отримав користь від його використання.
Це спрацює:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
Він видаляє всі файли, імена яких закінчуються .DS_Store
, в тому числі ._.DS_Store
.
"*.DS_Store"
, щоб зірочка передалася find
оболонці, а не розширювалася.
Чомусь ніхто з перерахованого вище не працював на моєму комп'ютері.
Моє рішення з термінального запуску:
rm .DS_Store
Потім запустіть наступну команду:
git pull origin master
Це працювало для мене, комбо з двох відповідей зверху:
Для вирішення цієї проблеми існує декілька рішень. Щоб уникнути створення .DS_Store файлів, не використовуйте Finder OS X для перегляду папок. Альтернативний спосіб перегляду папок - використання командного рядка 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, який має такий формат:
Хвилинна година DayOfMonth Month DayOfWeek Команда користувача.
Запис crontab означає, що команда буде виконуватися системою автоматично о 1:15 ранку щодня в обліковому записі під назвою root.
Команда починається з пошуку всього шляху до. Якщо система не працює, ця команда не буде виконана.
Щоб зберегти запис, натисніть клавішу Esc один раз, потім одночасно натисніть Shift + z + z.
Примітка. Інформація на кроці 4 призначена лише для редактора vi.
додайте це у свій файл .gitignore
#Ignore folder mac
.DS_Store
збережіть це і візьміть на себе зобов’язання
git add -A
git commit -m "ignore .DS_Store"
і тепер ви ігноруєте це у всіх своїх зобов'язаннях
Найкращий спосіб позбутися цього файлу назавжди і більше ніколи про нього не турбуватися - це
створити глобальний файл .gitignore:
echo .DS_Store >> ~ / .gitignore_global
І нехай git знає, що ви хочете використовувати цей файл для всіх своїх сховищ:
git config --global core.excludesfile ~ / .gitignore_global І це все! .DS_Store не в дорозі.
Не потрібно видаляти .DS_STORE
локально
Просто додайте його у .gitignore
файл
Файл .gitignore - це лише текстовий файл, який повідомляє Git, які файли чи папки ігнорувати в проекті.
Команди
nano .gitignore
.DS_Store
Потім натиснітьCTRL+X > y > Hit Return
git status
Останнє ознайомлення з вашими змінамиgit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master