Коли ви використовуєте .git / info / виключити замість .gitignore для виключення файлів?


144

Я трохи розгублений щодо плюсів і мінусів використання .git/info/excludeта .gitignoreвиключення файлів.

Обидва вони знаходяться на рівні сховища / проекту, тож чим вони відрізняються і коли нам користуватися .git/info/exclude?

Відповіді:


196

Перевага .gitignoreполягає в тому, що його можна перевірити в самому сховищі, на відміну від цього .git/info/exclude. Ще одна перевага полягає в тому, що ви можете мати декілька .gitignoreфайлів, один у кожному каталозі / підкаталозі для конкретних правил ігнорування каталогів.git/info/exclude .

Отже, .gitignoreдоступний для всіх клонів сховища. Тому у великих командах все люди ігнорують такі ж файли прикладу *.db, *.log. І ви можете мати більш конкретні правила ігнорування через кілька .gitignore.

.git/info/excludeдоступний лише для окремих клонів, отже, те, що одна людина ігнорує у своєму клоні, недоступне в клоні іншої людини. Наприклад, якщо хтось використовує Eclipseдля розробки, можливо, цей розробник має сенс додавати .buildпапку в.git/info/exclude оскільки інші розробники можуть не використовувати Eclipse.

Загалом, файли / правила ігнорування, які слід загально ігнорувати, повинні входити .gitignore, інакше файли, які ви хочете ігнорувати лише у вашому локальному клоні, повинні переходити в.git/info/exclude


але це в ідеалі має зайти в ~ / .gitignore відповідно до офіційної документації Git тут, git-scm.com/docs/gitignore
Девендра Свамі

@DevendraSwami У ~/.gitignoreвашому коментарі вище я не зрозумів, який саме запис слід вписати . Я розумію, що правила ігнорування можуть бути на 3 рівнях - $PROJECT/.git/info/excludeдля (проекту, користувача) специфічних правил ігнорування, $PROJECT/<any number of directories>/.gitignoreщо стосуються конкретних правил ігнорування проекту для будь-якого користувача в будь-якому місці (при реєстрації), ~/.gitignore для специфічних для користувача правил ігнорування для будь-якого проекту для цього користувача на цій машині. Грунтуючись на мету, ви вибираєте місце , щоб помістити запис в.
Mu無

так, ви абсолютно праві. Мій коментар був пов'язаний з цим питанням stackoverflow.com/questions/59673991/…
Девендра Свамі

Прошу вибачення за оригінальний неповний коментар.
Девендра Свамі

2
@ShimmyWeitzhandler, чи є файл sln у вашому репо? Тоді виключення або .ignore не завадить git відстежувати його зміни. Спробуйте одне з наступного: git rm --cached <path-name>видалите його з сховища, але збережіть на локальному рівні. git update-index --skip-worktree <path-name>буде ігнорувати зміни у файлі, але зберігати їх у сховищі. З цікавості: Чому ви хочете виключити файл sln? Це важлива частина рішення .Net, правильно?
Коен

36

Google: 3 способи виключення файлів

  1. .gitignore застосовується до кожного клона цього сховища (у всіх, він матиме його),
  2. .git/info/exclude стосується лише вашої локальної копії цього сховища (локальної, не надається спільним з іншими),
  3. ~/.gitignore застосовується до всіх сховищ на вашому комп’ютері (локальних, не спільних з іншими).

3. насправді потрібно встановити конфігурацію на комп’ютері:

git config --global core.excludesfile '~/.gitignore'

2
Так, я теж це читав, але хотів отримати більш практичну (реальну) точку зору :-)
Параг

Пов'язаний блог помилково називає файл .git/info/excludes, коли він повинен бути .git/info/exclude, що підтверджено документацією, на яку він посилається.
mwfearnley

13
(спойлер: третій спосіб - це комп'ютерне глобальне ігнорування через налаштування в ~ / .gitconfig)
hmijail сумує у відставці

@hmijail: дякую, я включив ваш коментар у цю відповідь
LeGEC

12

Просто для того, щоб запропонувати наш досвід (у реальному світі): ми почали використовувати .git / info / виключити, коли нам довелося налаштувати деякі конфігураційні файли для кожного середовища розробки, але все ж хотіли, щоб джерело зберігалося в репо-репортажі та було доступне для інших розробників.

Таким чином, локальні файли після клонування та модифікації можуть бути виключені з комітетів, не впливаючи на оригінальні файли в репо, але і не обов'язково ігноруватися в репо.


4

Використовуйте .gitignoreдля ігнорування правил, специфічних для проекту . Використовуйте excludeабо глобальний файл ігнорування для правил ігнорування, специфічних для вашого середовища .

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

Чи допомагає це?

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