Робота зі змінами

Видалення невідстежуваних файлів

Робоче дерево збирає файли, з яких git ніколи не робив копії: чернетка, debug-output.txt, dist/ від збірки, яка впала, node_modules із гілки, яку ви покинули минулого місяця. У git є одна команда для цього — git clean — і це єдина операція git, за якою не стоїть нічого. Цей вміст ніколи не був у коміті, тож немає ні запису в рефлозі, ні стешу, ні скасування, ні жодного заклинання git, яке поверне його назад.

Саме тому це та операція, яку люди запускають у терміналі й потім шкодують. Версія Gitcito показує весь список до того, як щось станеться.

⌘K → Видалити невідстежувані файли.

Невідстежувані та ігноровані шляхи, показані окремо, кожен із розміром, до того як щось буде видалено

Що означає цей список

Кожен запис — це шлях, до якого міг би дотягнутися git clean, з розміром на диску, у двох групах:

Група Що це Вибрано за замовчуванням
Невідстежувані Ніколи не комітилися, не підпадають під .gitignore Так
Ігноровані Підпадають під .gitignore — результати збірки, кеші, .env Ні

Цей поділ і є суттю. Ігноровані шляхи зазвичай нічого не варті — а іноді є єдиною копією чогось важливого: локального .env, дампа бази даних, завантаженої фікстури. Ніщо, що підпадає під .gitignore, ніколи не вибирається за вас.

Повністю невідстежувана директорія — це один рядок, а не рядок на кожен файл: tmp/, dist/, node_modules/ — бо саме з такою деталізацією git їх видаляє, а перелік із 40 000 файлів ніхто не читає. Її розмір — це сума того, що вона містить.

Тека, позначена як власний репозиторій, має свій .git: клон, який ви кинули всередину цього репозиторію, або експеримент, який так і не під’єднали. Git відмовляється їх видаляти (для цього йому потрібен -ff — прапорець, якого Gitcito не пропонує) — їх забирає Кошик.

Кошик чи видалення

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

Якщо його вимкнути, це буде справжній git clean -f -d -x рівно за вибраними шляхами, і Gitcito попросить підтвердити, показавши перед вами кількість і загальний розмір. Після цього не відновлюється нічого.

Обмеження, про які варто знати

  • Лише невідстежувані файли. Змінений відстежуваний файл сюди не потрапляє — це Відкинути, що відновлює його з індексу або з HEAD.
  • Список обмежений першими 400 шляхами. Якщо в репозиторії їх більше, видаліть те, що показано, і натисніть Пересканувати, щоб побачити решту.
  • Розміри директорій приблизні для дуже великих дерев: сканування зупиняється після 20 000 файлів, тож гігантський node_modules може виглядати меншим, ніж він є. Більшим він ніколи не виглядає.
  • Сканування — це знімок. Якщо збірка пише файли, поки діалог відкритий, натисніть Пересканувати, перш ніж щось видаляти.
  • Шляхи звіряються з власним списком придатних до видалення файлів git, перш ніж щось буде зачеплено, тож нічого відстежуваного через цей діалог видалити не можна — навіть за іменем.

Дивіться також: Індексація та відкидання змін · Ігнорування файлів · Видалення файлу з історії

Покращити цей переклад на GitHub