.gitignore, где мне поместить его в свой проект xcode?

102

Я хочу, чтобы git игнорировал мой UserInterfaceState.xcuserstateфайл в моем проекте XCode4, но куда мне поместить .gitignoreфайл? Внутри .gitпапки? или нет? .gitНаходится в той же папке с ProjectName.xcodeprojфайлом

Маурисио Альберто Баррагн Хуэрт
источник
возможный дубликат Где принадлежит файл .gitignore?
Паван Гупта

Ответы:

124

Вы можете иметь .gitignoreв каждом каталоге вашего проекта.

Однако лучше всего иметь один .gitignoreфайл в корневом каталоге проекта и размещать в нем все файлы, которые вы хотите игнорировать, например:

ignoredFile.whatever
ignoredDirectory/*
directory/ignoredFileInsideDirectory
.svn

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

У вас также может быть один глобальный локальный файл игнорирования git, который будет управлять всеми вашими репозиториями git.

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

Эта альтернатива особенно интересна для игнорируемых файлов, не связанных с проектом, таких как файлы, связанные с IDE и так далее.

Даниэль Рибейро
источник
1
Этот .gitignore должен быть добавлен в источник или в вашу копию основного / локального репо?
Адиль
1
Локально (конечно, в какой-то момент вы собираетесь подтолкнуть его к источнику).
Даниэль Рибейро
21

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

  1. Global git ignore: - При таком подходе ваши пользовательские правила будут применяться к каждому каталогу git на вашем компьютере. Обычно этот файл создается по ~/.gitignore_globalпути. Этот подход хорош, если вы хотите исключить файлы некоторых типов, которые создаются ОС или любыми другими инструментами для ведения журнала, кеширования и т. Д.
  2. Git ignore для каждого репозитория: - При таком подходе ваши пользовательские правила будут применяться к определенному каталогу git на вашем компьютере. К .git/info/excludeфайлу в вашем репозитории можно добавить локальные правила для каждого репозитория. Правила, указанные в этом файле, не будут приняты, что означает, что он не будет передан другим пользователям. Обычно этот подход полезен для предотвращения фиксации локально сгенерированных файлов. Например, для файлов, созданных вашим редактором.
  3. Для каждого пути git ignore: - В этом случае ваши пользовательские правила будут применяться к конкретному подкаталогу репозиториев git. Вы можете создать .gitignoreв любом дополнительном пути вашего конкретного репозитория. Этот подход обычно используется для игнорирования некоторых типов файлов только в определенной папке определенного репозитория. Хотя эти файлы могут быть добавлены в контроль версий по другим путям и другим репозиториям.

Итак, я предлагаю вам игнорировать свой конкретный файл ( UserInterfaceState.xcuserstate) во всех ваших репозиториях, лучший подход - использовать глобальный подход git ignore. Однако, если ваш файл создается только в определенном репозитории, вы можете использовать подход git ignore для каждого репозитория.

Для получения дополнительной информации вы можете прочитать этот отличный пост в блоге. И на язык конкретных GIT игнорирующие правила могут быть основаны здесь . И вы можете автоматически сгенерировать общие правила игнорирования git для определенного языка, инструмента или ОС, используя этот веб-сайт .

Хамидулла
источник
20

Вы должны поместить файл .gitignore в корневой каталог проекта.

heinrich5991
источник
12

Куда мне поместить .gitignoreфайл? Он находится в папке .git?

Там нет .gitignoreВнутри .gitпапки.
Однако это .git/info/excludeфайл, который позволяет вам исключить файл локально, как правило, когда вы хотите исключить файл только для этого конкретного репо (с псевдонимом, подобным этому ):

git config alias.exclude "!sh -c 'echo \"$1\" >> .git/info/exclude' -"
git exclude UserInterfaceState.xcuserstate

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

echo UserInterfaceState.xcuserstate >> ~/.gitignore

Но, как упоминалось в разделе « Нужно ли нам проверять * .xcuserstate? », Если это тип файла, который должен игнорироваться любым пользователем этого репо, я бы фактически сделал версию .gitignore в верхней части репо, с содержанием, аналогичным:

*.xcuserstate 

Таким образом, любой пользователь этого репо даже не поймет, что этот файл существует и создается (каково бы ни было его имя): он не появится в файле git statusever.

Или вы можете полностью игнорироватьxcuserdata/ (либо в глобальном .gitignore, либо в версионном, например в общемObjective-C.gitignore файле GitHub .

VonC
источник
Вы легенда GIT! всегда ваши ответы самые полезные.
Jad Chahine
@JadChahine Спасибо. Рад помочь (по крайней мере, написание этих ответов поможет мне изучить git)
VonC
@tymac Не совсем;) Я просто регулярно посещаю ( meta.stackexchange.com/questions/122976/… )
VonC
9

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

Вместо этого создайте свой личный глобальный .gitignoreфайл в своем домашнем каталоге и активируйте его:

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

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

Эльнур Абдуррахимов
источник
6

Обычно рекомендуется включать .gitignoreфайл в корневой каталог проекта.

Ajey
источник