Когда бы вы использовали .git / info / exclude вместо ~ / .gitignore (core.excludeFile) для исключения файлов? - PullRequest
2 голосов
/ 10 января 2020

Я немного запутался, когда вы бы использовали .git/info/exclude вместо ~/.gitignore (core.excludesFile) для исключения файлов? Мне ясно, когда использовать .gitignore файл, присутствующий в репозитории проекта, который указан c для этого проекта, контролируемый версиями и совместно используемый с другим репо через клон, но я не могу понять разницу между двумя вышеупомянутыми в некоторой степени пользовательскими спецификациями c файлы, которые нужно игнорировать.

Таким образом, я ищу разницу между ~/.gitignore и .git/info/exclude, а не между .gitignore (project dir) и .git/info/exclude.

ОБНОВЛЕНИЕ: я не могу представьте себе c использование .git/info/exclude, поскольку любые файлы, которые я хочу игнорировать, попадают в .gitignore или ~/.gitignore. Было бы очень полезно, если бы кто-нибудь мог привести пример для шаблона / файла, который должен быть специально включен в .git/info/exclude.

Ответы [ 2 ]

3 голосов
/ 10 января 2020

Размещение имени файла или шаблона в вашем глобальном файле игнорирования (~/.gitignore или $XDG_CONFIG_HOME/git/ignore) приведет к подавлению жалоб на него во всех хранилищах. Помещение того же имени или шаблона в файл игнорирования для каждого хранилища (.git/info/exclude) будет подавлять жалобы только для этого одного хранилища.

Ни одно из них не является ни превосходящим, ни подчиненным; они просто разные . Стоит отметить, что древние Git поддерживали только файлы .gitignore и .git/info/exclude в репозитории, т. Е. Не имели индивидуальных пользователей, глобальные ~/.gitignore.

Если вы лично используете редактор, который делает файлы резервных копий, чье имя оканчивается (скажем) $ вместо .bak или .~, а остальные нет (а файлы резервных копий всех остальных уже находятся в фиксированном .gitignore), вы можете поставить *$ в вашем личном ~/.gitignore. Если вы используете этот редактор только с этим одним проектом, возможно, имеет смысл поместить его в .git/info/exclude.

Если проект сам создает много файлов, которые нужно игнорировать, имеет смысл поместить эти имена в .gitignore файлах, которые фиксируются в проекте, но если есть какая-то причина, по которой это не может быть , то имеет смысл поместить эти шаблоны в .git/info/exclude: их не следует игнорировать в других проектах.

1 голос
/ 10 января 2020

Из документов ,

Шаблоны, которые указаны c для конкретного репозитория, но которые не должны использоваться совместно с другими связанными репозиториями (например, вспомогательными файлами). которые находятся внутри репозитория, но указаны c для рабочего процесса одного пользователя) должны go в $ GIT_DIR / info / exclude файл.

Шаблоны, которые пользователь хочет Git игнорировать во всех ситуациях (например, резервные или временные файлы, сгенерированные выбранным редактором пользователя) обычно go в файл, указанный в core.excludeFile в пользовательском ~ / .gitconfig .

Если вы работаете в среде IDE, в ней обычно есть IDE-файлы c, такие как настройки проекта, настройки рабочего пространства и т. Д. c. Это файлы пользователя и репозитория (разные IDE для разных проектов ...), указанные c. Такие файлы могут быть исключены с помощью файла $GIT_DIR/info/exclude.

В отношении этого ~/.gitconfig редактор может оставить некоторые резервные или временные файлы, такие как nano, которые хранят файлы подкачки в каталоге во время редактирования, поэтому такие файлы следует игнорировать глобально для всех репозиториев в локальной системе.

Тем не менее вопрос остается; безопасно ли предположить, что .gitignore и ~ / .gitignore достаточно для указания того, что следует игнорировать?

.gitignore не должно быть проблемой, поскольку это спецификация репозитория c, однако ~/.gitignore может быть проблемой, рассмотрим ситуацию, когда файл игнорируется глобально, используя ~/.gitingore для всех локальных репозиториев, и оказывается, что файл был необходимым компонентом для другого репозитория, в этом случае следует использовать $GIT_DIR/info/exclude .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...