.gitignore файл, де я повинен його розмістити у своєму проекті xcode?


102

Я хочу, щоб git ігнорував мій UserInterfaceState.xcuserstateфайл у моєму проекті XCode4, але куди я повинен його розмістити .gitignore? Чи він знаходиться всередині .gitпапки? чи поза? Знаходиться .gitв одній папці з ProjectName.xcodeprojфайлом


можливий дублікат Де належить файл .gitignore?
Pavan Gupta

Відповіді:


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. Глобальне ігнорування git: - У цьому підході ваші користувацькі правила застосовуватимуться до кожного каталогу git у вашій машині. Зазвичай цей файл може бути створений під ~/.gitignore_globalшляхом. Цей підхід хороший, якщо ви хочете виключити деякі типи файлів, які генеруються ОС або будь-якими іншими інструментами реєстрації, отримання готівки тощо.
  2. Ігнорувати git для репозиторію: - У цьому підході ваші користувацькі правила застосовуватимуться до конкретного каталогу git у вашій машині. Місцеві правила для кожного репозиторію можуть бути додані до .git/info/excludeфайлу у вашому сховищі. Правила, вказані в цьому файлі, не будуть вчинені, а це означає, що він не може бути наданий іншим. Зазвичай такий підхід корисний для запобігання введенню локально створених файлів. Наприклад, для файлів, створених вашим редактором.
  3. За ігноруванням git: - У цьому випадку ваші власні правила будуть застосовані до конкретного піддоступного репозиторію git. Ви можете створювати .gitignoreв будь-якому підпункті вашого конкретного сховища. Цей підхід зазвичай використовується для ігнорування деяких типів файлів лише в певній папці певного сховища. Хоча ці файли можуть бути додані до контролю версій іншими шляхами та іншими сховищами.

Отож, я пропоную вам, якщо ви хочете ігнорувати свій конкретний файл ( UserInterfaceState.xcuserstate) у всіх ваших сховищах, найкращим підходом є використання глобального підходу до ігнорування git. Однак якщо ваш файл генерується лише в конкретному сховищі, ви можете використовувати підхід до ігнорування git per-repository.

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


20

Ви повинні помістити файл .gitignore в кореневий каталог проекту.


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 statusніколи.

Або ви можете повністю ігноруватиxcuserdata/ (або в глобальній .gitignore, або у версійній, як узагальненийObjective-C.gitignore файл GitHub .


Ви легенда GIT! завжди ваші відповіді найкорисніші.
Джад Чахін

@JadChahine Дякую Радий допомогти (принаймні, написання цих відповідей допоможе мені вивчити git)
VonC,

@tymac Не зовсім;) Я просто відвідую регулярно ( meta.stackexchange.com/questions/122976/… )
VonC

9

Ви повинні НЕ ставити інструмент конкретних файлів в проекті в .gitignoreфайл - якщо цей інструмент не потрібні для використання кожного розробником проекту.

Натомість створіть свій особистий глобальний .gitignoreфайл у своєму домашньому каталозі та активуйте його:

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

Тепер ви можете помістити у свій .gitignoreфайл усі файли, створені інструментами розробки .


6

як правило, найкраща практика включати .gitignoreфайл у кореневий каталог проекту

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.