Як ігнорувати всі приховані каталоги / файли рекурсивно у сховищі git?


128

Я хотів би, щоб Git ігнорував усі приховані файли та каталоги. тобто

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

Чи існує просте правило, щоб це висвітлити без конкретного додавання кожного запису?

Відповіді:


165

Просто додайте шаблон .gitignore

.*
!/.gitignore

Редагувати: додав сам .gitignoreфайл (має значення, якщо він ще не зафіксований).


3
Ви можете змусити додати деякі файли, необхідні після цього. напр. файл .htaccess. Виходячи з ваших вимог, звичайно.
— dakdad

3
@dakdad: Дякую за пропозицію. Покращили відповідь. Якщо у По є якісь спеціальні файли, як .htaccessуже зареєстровані, вони продовжують дотримуватися. gitignoreважливо лише для нових файлів.
— Даніель Бьомер

@ DanielBöhmer Можливо, це знімає тему, але чи є причина для того, щоб ігнорувати лише цей файл, /.gitignoreа не кожен .gitignoreфайл незалежно від того, де він знаходиться? Тобто чому не перелічити !.gitignore(без косої риски)?
— Джейсон Янг

1
@JasonYoung Цікаве запитання. Що ж, цей зразок не ігнорує лише сам файл. Я вважаю це більш лаконічним, без побічних ефектів, наприклад, копіювати та вставляти. Звичайно, ви, ймовірно, можете просто відігнорувати будь-які .gitignoreфайли у вашому .gitignoreфайлі верхнього рівня . Але цей вибір залежить від вас.
— Даніель Бьомер

64

.gitignore вплине лише на файли, які вже не додані.

Щоб зробити нові записи .gitignore, впливають на всі файли

  1. Внесіть зміни до .gitignore
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status повинен вивести "нічого для фіксації (робочий каталог чистий)" `

Тут є ключовим рядком "ще не додано", тому що якщо ви вже зав'язали заданий файл, ігнор більше не буде працювати над ним, ви повинні видалити його з сховища, і наступного разу, коли ви створите його .gitignore буде ігнорувати це.
— Георгій Пеєв

21

В .git/info/exclude, додайте наступний рядок:

.*

Це зробить ігнорування всіх прихованих / точкових файлів рекурсивно за замовчуванням для кожного сховища на машині. Окремий .gitignoreфайл для кожного репо не потрібен.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.