Найкращі практики

Знай, що ігнорувати

Є кілька типів файлів, які в Git-репозиторії зазвичай варто ігнорувати через файл .gitignore. Ігнорування таких файлів тримає репозиторій чистим і не дає зайвим файлам потрапляти в коміти.

Артефакти збірки. Не коміть артефакти збірки — їх можна заново згенерувати з вихідного коду, а репозиторій вони тільки роздувають. До того ж вони можуть щоразу трохи відрізнятися (наприклад, через мітки часу), і контроль версій перетворюється на безлад.

Можливі винятки:
  1. Якщо артефакти — це кінцевий результат роботи (наприклад, файли статичного сайту для розгортання).
  2. Якщо корисно бачити зміни в зібраних файлах між релізами.
  3. Якщо збірка повільна або ресурсомістка, закомічені артефакти можуть заощадити час.

Залежності проєкту. Не коміть залежності — їх можна встановити через пакетний менеджер, а репозиторій вони тільки роздувають. Часті оновлення теж захаращують контроль версій. Натомість коміть lock- або manifest-файли, щоб зафіксувати точні версії.

Можливі винятки:
  1. Закомічені залежності можуть пришвидшити збірку, бо їх не треба щоразу завантажувати. Це стає актуальним, якщо у проєкті є автотести.
  2. Закомічені залежності гарантують, що проєкт збирається з точними версіями, і захищають від атак на ланцюг постачання. Уяви хакера з Північної Кореї, який зламує глобальний реєстр пакетів, а ти, нічого не підозрюючи, встановлюєш заражений пакет. Це реальна історія, яка вже траплялася не раз.

API-ключі та інші секрети. У проєкті може бути конфігураційний файл з API-ключами, паролями чи іншими секретами. Комітити такі файли в репозиторій не варто, бо вони містять чутливу інформацію. До того ж у різних середовищах (розробка, тестування, продакшн) можуть знадобитися різні ключі.

Логи й тимчасові файли. Проєкт може генерувати файли логів, тимчасові файли та інші файли, які не належать до вихідного коду. Користі для проєкту від них немає, тож комітити їх у репозиторій не потрібно.

Великі бінарні файли. Великі файли (наприклад, зображення, відео, архіви) розміром понад 100 МБ не підходять для контролю версій. Git не розрахований на ефективну роботу з великими файлами, і вони можуть сповільнити репозиторій. Для великих файлів використовуй Git LFS або інші інструменти. Закомітити великий файл можна, але з часом це просто все сповільнюватиме.

Файли IDE та редакторів. Сучасні редактори та IDE створюють приховані директорії зі своїми налаштуваннями й кешем. Зазвичай проєкту вони не потрібні, бо містять твої особисті вподобання та налаштування. Утім, їх можна закомітити, якщо команда хоче мати спільні налаштування.

Системні файли. У macOS операційна система може сама собою створювати службові файли .DS_Store у директорії проєкту. У Finder вони зазвичай приховані, але в терміналі їх видно. Проєкту такі файли не потрібні, тож комітити їх у репозиторій не варто.