Стоит ли вносить .gitignore в репозитории Git?


497

Считаете ли вы хорошей практикой вводить .gitignore в репозиторий Git?

Некоторым людям это не нравится, но я думаю, что это хорошо, так как вы можете отслеживать историю файла. Не так ли?


38
если нет, поместите .gitignore в .gitignore ...
CharlesB

Ответы:


489

Обычно да, .gitignoreэто полезно для всех, кто хочет работать с хранилищем. Иногда вам захочется игнорировать более личные вещи (возможно, вы часто создаете LOGили что-то в этом роде. В этих случаях вы, вероятно, не хотите навязывать это кому-либо еще).


137
+1 «Личные вещи» могут быть упомянуты в файлах $GIT_DIR/info/excludeили ~/.gitconfigв соответствующих случаях.
Посмотрите

5
Если у вас уже есть зарегистрированный файл, и вы хотите его игнорировать, Git не будет игнорировать файл, если вы добавите правило позже. В этих случаях вы должны сначала распаковать файл, выполнив следующую команду в своем терминале:git rm --cached FILENAME
eli-bd

133

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

Есть случаи, когда вы хотите игнорировать вещи, которые на самом деле не специфичны для проекта. Например, ваш текстовый редактор может создавать *~файлы автоматического резервного копирования, или другим примером могут быть .DS_Storeфайлы, созданные OS X.

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

По умолчанию этот файл находится в $XDG_CONFIG_HOME/git/ignore(по умолчанию ~/.config/git/ignore), но это местоположение можно изменить, установив core.excludesfileпараметр. Например:

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

Просто создайте и отредактируйте глобальный файл excludefile для вашего сердца; он будет применяться к каждому git-репозиторию, над которым вы работаете на этой машине.


14
Вы всегда можете добавить # some commentстроки в .gitignoreфайл, чтобы объяснить, почему вы что-то игнорируете. Комментируя каждую строку немного излишним, но у меня есть разделы помечены # IDE (Eclipse), # OS (Mac OS X)и # Generated (Perl). Таким образом, если кто-то хочет использовать другую ОС или IDE, он может добавить раздел, и мы все можем поделиться.
Стюарт Р. Джефферис

9
«Я лично захожу так далеко, что проверяю, что мой индекс всегда чист, когда я не работаю над чем-либо (состояние git ничего не должно показывать.)»
SGhosh

4
В северном направлении с современным Git значением по умолчанию core.excludesfileявляется is ~/.config/git/ignore, соответствующее спецификации XDG Base Directory
Jakub Narębski

1
+1 за глобальный .gitignore- Чрезвычайно полезно, когда люди, с которыми вы работаете, не согласны с содержимым отправляемых .gitignoreфайлов или с тем, должны ли они передаваться, и мы все используем тонну различных сред разработки, которые генерируют различные типы шума.
Krease

1
davidwalsh.name/global-gitignore Еще немного информации о глобальном игнорировании
Фроде Аксельсен

11

Я помещаю commit .gitignore, который любезен другим, кто может построить мой проект, что следующие файлы являются производными и должны игнорироваться.

Я обычно делаю гибрид. Мне нравится, когда make-файл генерирует файл .gitignore, так как make-файл будет знать все файлы, связанные с проектом - или иначе. Затем запустите зарегистрированный проект верхнего уровня .gitignore, который будет игнорировать созданные файлы .gitignore, созданные make-файлом для различных подкаталогов.

Так что в моем проекте у меня может быть подкаталог bin со всеми встроенными исполняемыми файлами. Затем мой make-файл сгенерирует .gitignore для этого каталога bin. И в верхнем каталоге .gitignore, в котором перечислены bin / .gitignore. Верхний тот, который я проверяю.


0

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

Поэтому да, сделайте свой .gitignore, но не раньше, чем вы будете уверены, что он не изменится после этого.


-6

Хорошей практикой является использование по .gitignore крайней мере ваших продуктов для сборки (программ, * .o и т. Д.).


11
Это не ответило на вопрос: .gitignore само должно быть « .gitignoreд»?
Чарльз Вуд

6
Обратите внимание, что это был не вопрос, и это действительно отвечает на вопрос: «Является ли [это] хорошей практикой фиксация .gitignore в репозитории Git?».
papercowboy

5
@cayuu Я полагаю, что ответ говорит: «Это хорошая практика .gitignore» xyz, я не понимаю, как он отвечает на вопрос. вопрос в том, должен ли .gitignore иметь контроль версий или нет.
ночная фотография
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.