Меня немного смущают плюсы и минусы использования .git/info/exclude
и .gitignore
исключения файлов.
Оба они находятся на уровне хранилища / проекта, так как они отличаются и когда мы должны использовать .git/info/exclude
?
Преимущество .gitignore
заключается в том, что, в отличие от этого, его можно проверить в самом хранилище .git/info/exclude
. Другое преимущество состоит в том, что вы можете иметь несколько .gitignore
файлов, по одному внутри каждого каталога / подкаталога для правил игнорирования, характерных для каталога, в отличие от .git/info/exclude
.
Итак, .gitignore
доступно во всех клонах репозитория. Поэтому в больших командах все люди игнорируют такие же файлы примера *.db
, *.log
. И вы можете иметь более конкретные правила игнорирования из-за нескольких .gitignore
.
.git/info/exclude
доступно только для отдельных клонов, поэтому то, что один человек игнорирует в своем клоне, недоступно в клоне другого человека. Например, если кто-то использует Eclipse
для разработки, для этого разработчика может иметь смысл добавить .build
папку, .git/info/exclude
потому что другие разработчики могут не использовать Eclipse.
В общем, должны быть включены правила files / ignore, которые должны игнорироваться повсеместно .gitignore
, а в противном случае файлы, которые вы хотите игнорировать только в локальном клоне, должны войти в.git/info/exclude
~/.gitignore
в вашем комментарии выше. Насколько я понимаю, правила игнорирования могут быть на 3 уровнях -$PROJECT/.git/info/exclude
для правил игнорирования$PROJECT/<any number of directories>/.gitignore
для конкретного проекта (пользователя, пользователя), которые предназначены для правил игнорирования для конкретного проекта для любого пользователя в любом месте (при регистрации),~/.gitignore
для правил игнорирования для конкретного пользователя для любого проекта для этого пользователя. на этой машине. Исходя из цели, вы выбираете место для размещения записи.git rm --cached <path-name>
выполнить одно из следующих действий: удалите его из хранилища, но сохраните его локально.git update-index --skip-worktree <path-name>
будет игнорировать изменения в файле, но держать его в хранилище. Из любопытства: почему вы хотите исключить файл sln? Это важная часть решения .Net, верно?Гуглил: 3 способа исключения файлов
.gitignore
применяется к каждому клону этого репозитория (версионно, он будет у каждого),.git/info/exclude
Относится только к вашей локальной копии этого хранилища (локальной, не переданной другим),~/.gitignore
применяется ко всем репозиториям на вашем компьютере (локальным, не совместно используемым с другими).3.
на самом деле требуется установить конфигурацию на вашем компьютере:источник
.git/info/excludes
, когда это должно быть.git/info/exclude
, что подтверждается документацией, на которую он ссылается.Просто для того, чтобы предложить наш (реальный мир) опыт: мы начали использовать .git / info / exclude, когда нам пришлось настраивать некоторые файлы конфигурации в каждой среде разработки, но все же хотели, чтобы исходный код сохранялся в репозитории и был доступен другим разработчикам.
Таким образом, локальные файлы после клонирования и изменения могут быть исключены из коммитов, не затрагивая исходные файлы в репо, но не обязательно игнорируясь в репо.
источник
Используйте
.gitignore
для игнорирования правил, специфичных для проекта . Используйтеexclude
или глобальный файл игнорирования для игнорирования правил, специфичных для вашей среды .Например, мои глобальные файлы игнорирования игнорируют временные файлы, сгенерированные любым редактором, который я использую - это правило специфично для моей среды и может отличаться для некоторых других разработчиков в том же проекте (возможно, они используют другой редактор). OTOH, мои
.gitignore
файлы проекта игнорируют такие вещи, как ключи API и артефакты сборки - они предназначены для проекта и должны быть одинаковыми для всех в проекте.Это помогает?
источник