Почему.gitignore не является частью репозитория по умолчанию?

Вопрос:

Я создал файл .gitignore и он продолжает отображаться в области неустановленных изменений.

Почему git не заботится об этом автоматически, поскольку это своего рода файл конфигурации для проекта (репо)? Не может быть частью репозитория по умолчанию? Почему такое поведение входит в дизайн? Существуют ли какие-либо варианты использования такого дизайна?

Лучший ответ:

В принципе, .gitignore — это просто файл.

Git — очень общий инструмент и не содержит никаких особых случаев без уважительной причины. И нет достаточной причины, почему файл .gitignore следует рассматривать отдельно.

Таким образом, у пользователей есть возможность выбрать, хотите ли они иметь один и тот же .gitignore и проверить его. Или разрешить каждому клиенту иметь собственный набор игнорируемых файлов.

Ответ №1

Потому что содержимое этого файла, вероятно, должно измениться по мере изменения кода в проекте. Это означает, что вы хотите сохранить историю версий самого файла.gitignore вместе с файлами, составляющими проект. И это означает, что вы будете использовать обычные команды git для управления, когда вы совершаете этот файл.

Поэтому больше ничего не нужно делать. Вам нужно использовать команды git в любом случае, чтобы управлять фиксацией.gitignore должным образом (было бы нецелесообразно подразумевать commit.gitignore каждый раз, когда вы его редактируете, чем если бы он неявно передавал любой другой файл сразу после его изменения) поэтому охватывает все случаи использования файла для отслеживания. Поэтому нет необходимости в git для лечения.gitignore.

Ответ №2

существует как минимум три способа игнорировать файлы в git:

эти настройки сохраняются в метаданных вашей установки git/текущего клона. они не передаются при создании нового клона и, таким образом, не распределяются между пользователями.

однако люди заметили, что часто все они хотят игнорировать одни и те же файлы, и они хотели бы обменяться списком игнорируемых файлов. этот список изменяется со временем, поэтому разумно поставить его под контроль версий. и, как один из принципов unix, все, что возможно, является файлом и открытым текстом, вы получаете файл.gitingore. теперь у вас есть репозиторий и файл, который должен контролироваться версией и обмениваться между всеми пользователями репозитория. Почему бы просто не добавить файл в репозиторий? таким образом вам не нужна никакая специальная логика и никакие скрытые файлы конфигурации, все просто работает.

и это третий способ игнорировать файлы в git:

  • игнорировать их через файл.gitignore

в моем личном мнении..gitignore файлы являются одной из вещей, которые делают git awesome.

PS: немного подробнее рассказать о «почему это не так по умолчанию»: я не отвечаю на вопрос напрямую, но размышление об этих вопросах может помочь:

  • почему нет по умолчанию файла readme? каждый репо должен иметь один!
  • то же самое для лицензии? каждый репо должен иметь один!

все это настоятельно рекомендуется и передовые методы, но с технической точки зрения вы можете обойтись. и git имеет тенденцию делать только минимальный минимум, чтобы заставить все работать. по умолчанию git стремится быть разумным, но минимальным. это здорово, но иногда это делает его труднее для новичков.

Ответ №3
  1. Git хочет убедиться, что вы знаете файлы, которые он будет отслеживать, независимо от типа. Этот невротический уровень контроля над файлами в вашей программе — вот что делает Git (или любой другой достойный VCS) настолько мощным. Хотя изначально раздражает, хорошо, что git не выполняет «волшебство» с вашими файлами.
  2. .gitignore файл .gitignore может нанести ущерб хранилищу, и проверка их автоматически может быть катастрофической.
Ответ №4

В дополнение к другим ответам…

Если вы хотите, чтобы проигнорированные файлы отслеживались как часть репо и были доступны другим людям, которые его проверяют, тогда файлы (-ы) .gitignore должны быть отслежены (проверены и версированы), как и любой другой файл.

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

Оцените статью
TechArks.Ru
Добавить комментарий