Ответы:
Преимущество .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 config --global core.excludesfile '~/.gitignore'
.git/info/excludes, когда это должно быть .git/info/exclude, что подтверждается документацией, на которую он ссылается.
Просто для того, чтобы предложить наш (реальный мир) опыт: мы начали использовать .git / info / exclude, когда нам пришлось настраивать некоторые файлы конфигурации в каждой среде разработки, но все же хотели, чтобы исходный код сохранялся в репозитории и был доступен другим разработчикам.
Таким образом, локальные файлы после клонирования и изменения могут быть исключены из коммитов, не затрагивая исходные файлы в репо, но не обязательно игнорируясь в репо.
Используйте .gitignoreдля игнорирования правил, специфичных для проекта . Используйте excludeили глобальный файл игнорирования для игнорирования правил, специфичных для вашей среды .
Например, мои глобальные файлы игнорирования игнорируют временные файлы, сгенерированные любым редактором, который я использую - это правило специфично для моей среды и может отличаться для некоторых других разработчиков в том же проекте (возможно, они используют другой редактор). OTOH, мои .gitignoreфайлы проекта игнорируют такие вещи, как ключи API и артефакты сборки - они предназначены для проекта и должны быть одинаковыми для всех в проекте.
Это помогает?