В цьому дописі ми розглянемо, як додати .DS_Store до файлу .gitignore, та видалимо вже додані файли з нашого репозиторію. Але спочатку треба розібратись в тому, що таке .DS_Store, для чого потрібен, чому потрапляє в Git та як видалити.
Що таке .DS_Store?
.DS_Store (Desktop Services Store) — це прихований системний файл, створений macOS для збереження інформації про відображення тек у Finder, таких як позиції іконок, розміри вікон, фонові кольори і т.д.
Якщо ви відкриваєте теку у Finder та міняєте позицію іконки - Finder збереже інформацію про позицію у .DS_Store. За замовчуванням цей файл прихований, але його можна побачити в терміналі. Навіть якщо в Finder ввімкнути показ прихованих файлів - .DS_Store буде ховатись від вас. Більш детально про приховані файли почитайте у попередньому дописі - Що означає крапка на початку файлу(.gitignore, .DS_Store, .bashrc тощо)?
Чому .DS_Store потрапляє в Git?
Коли ви працюєте над проєктом на macOS і використовуєте Git для контролю версій, файли .DS_Store можуть потрапляти в ваш репозиторій разом з іншими файлами цілком випадково. Це відбувається тому, що за замовчуванням Git не ігнорує ці файли, і вони можуть бути випадково додані до індексу. Розглянемо приклад. Я використовую GitHub Desktop для роботи з Git і клоную новий репозиторій собі на локальну машину. Перше що я роблю - створюю файл test.txt:
Зверніть увагу, що Git бачить зміни лише нового файлу (створив за допомогою VSCode і зберіг в теці цього репо). Це пов'язано з тим, що наразі Finder не має якихось кастомних налаштувань для цього файлу та теки загалом. Відкриємо теку в Finder, змінемо позицію файлу (іконки) в режимі плитки і побимо, що новий .DS_Store додався до списку змін у Git:
Уявіть, що ви зробили коміт, додавши .DS_Store до репозиторію проєкту, над яким працює багато людей. По-перше, нікому не потрібні конфіги вашого Finder'у у репо проєкту. По-друге, ці файли засмічують історію комітів та репо в цілому.
Як запобігти додаванню .DS_Store до репо?
Все просто - ігноруйте його. Я маю на увазі - додайте його до файлу .gitignore.
Просто додайте цю строку:
.DS_Store
Якщо файлу .gitignore ще не існує - створіть його (за допомогою редактору коду або через термінал).
Через термінал можна створити цей файл за допомогою touch:
touch .gitignore
Ну і додати текст '.DS_Store' до файлу .gitignore можна за допомогою echo:
echo .DS_Store >> .gitignore
Після цього кроку зазвичай люди пробують створити нову теку, додати туди новий файл і змінити позицію файлу у Finder, щоб перевірити чи справді ігноруються .DS_Store.
І скоріш за все - нові .DS_Store будуть з'являтись і не будуть ігноруватись. Але чому?
Чому .gitignore не працює та не ігнорує .DS_Store?
Запустимо наступні команди в терміналі, щоб отримати потрібний результат (ігнорування .DS_Store):
Після цього ми отримаємо новий коміт з видаленими .DS_Store файлами, а нові будуть ігноруватись і не додаватись до індексу файлів.
Але давайте розберемо, що ми там запустили у терміналі:
Спочатку ви видаляєте всі файли .DS_Store з файлової системи за допомогою команди find ... -delete.
Потім ви видаляєте всі файли з індексу Git (не з файлової системи) за допомогою команди git rm --cached.
Додаєте всі файли до індексу знову, щоб переконатися, що файли .DS_Store не потраплять у новий коміт, тому що вони тепер ігноруються .gitignore.
Створюєте новий коміт з повідомленням, яке описує зроблені зміни.
Насправді все діло у кеші. Тож ми його почистили. Звісно, можна запустити чистку кешу вибірково для одного файлу:
git rm --cached `.DS_Store`
Але мене більш влаштовує рекурсивна чистка всього кешу (це більш універсальний шлях):
Цей блок містить всю необхідну інформацію для правильного цитування, включаючи дату публікації, назву допису, URL та інше.
Зверніть увагу, що посилатись потрібно на автора/авторку контенту (профіль, окремий допис тощо), а сайт цейво (tseivo.com) - лише майданчик для розміщення публікацій.
💡 Архівування сторінки у веб-архіві, такому як Wayback Machine, є корисною практикою, коли ви посилаєтесь на неї. Це дозволить зберегти стан сторінки на цей час і знизить ризики від зміни контенту або зміни структури сайту у майбутньому.
Оберіть та скопіюйте потрібний стандарт цитування:
ДСТУ 8302:2015
Як видалити файл .DS_Store з Git репозиторію? [Електронний ресурс] // tseivo.com. – Режим доступу: https://tseivo.com/b/memecode/t/jgjomamv5r/yak-vydalyty-fail-ds_store-z-git-repozytoriiu (дата звернення: 05.10.2024). – Назва з екрана.
ДСТУ ГОСТ 7.1:2006 (ВАК)
Як видалити файл .DS_Store з Git репозиторію? [Електронний ресурс] // tseivo.com. – URL: https://tseivo.com/b/memecode/t/jgjomamv5r/yak-vydalyty-fail-ds_store-z-git-repozytoriiu (дата звернення: 05.10.2024).
Або ж використовуйте наступну інформацію для формування цитування:
Автор/авторка пише під псевдонимом і не оприлюднює своє справжнє ім'я. Завжди перевіряйте достовірність контенту використовуючи декілька джерел (навіть, якщо контент опублікован під справжнім ім'ям).
Про зображення:
На нашій платформі ми приділяємо особливу увагу правильному вказуванню джерел зображень, щоб забезпечити дотримання авторських прав і прав на використання контенту. Ми намагаємося мотивувати використовувати виключно власні зображення, ресурси, що відповідають принципам fair use, або безкоштовні зображення з ліцензіями на кшталт Unsplash, які дозволяють вільне використання без порушення прав інтелектуальної власності.
Однак, враховуючи масштаб нашої платформи та різноманітність контенту, ми не можемо повністю контролювати всі публікації користувачів. Тому ми рекомендуємо перевіряти права на використання зображень та дотримуватися відповідних ліцензій, щоб уникнути можливих порушень авторських прав.
Інформація на сайті tseivo.com є суб'єктивною та відображає особисті погляди та досвід авторів та авторок блогів.
Використовуйте цей ресурс як одне з декількох джерел інформації під час своїх досліджень та прийняття рішень. Завжди застосовуйте критичне мислення. Людина сама несе відповідальність за свої рішення та дії.