Що таке .gitignore саме?


212

Я щойно створив сховище Github і цікавився, для чого .gitignoreфайл. Я почав з того, що не створював жодного, а додав його через те, що більшість сховищ має його. Чи потрібно мені мати його? Чи можу я / просто проігнорувати це чи він має користь? Я провів деякі дослідження з цього питання, але не зміг знайти конкретного пояснення.

Відповіді:


175

.gitignoreповідомляє git, які файли (або шаблони) він повинен ігнорувати. Зазвичай використовується для уникнення вчинення перехідних файлів із робочого каталогу, які не корисні іншим співавторам, таким як продукти для компіляції, створення тимчасових ідентифікаторів файлів тощо.

Ви можете знайти повну інформацію тут .


Отже, якщо ви створили .gitignore в новому сховищі на github.com, а потім зробіть git init та git add . на вашому локальному комп’ютері - ще не підключено до .gitignore, оскільки він ще не підключений до цього сховища - як це працює? Чи діє це, коли я виконую git počin? Або?
Xonatron

для чого _._gitignoreвикористовується? він використовується лише тоді, коли gitignore знаходиться в підметі.
Saikat Chakrabortty

Тож воно залишається локально, але не підштовхується до походження? Отже, якщо якийсь користувач завантажує github repo, чи цей секретний файл також завантажується?
Зустрінься із Завери

Що означає ігнорування ? Хто / що / коли ігнорує? Я знаю, що означає слово ignore, але я не знаходжу чіткого опису того, що означає ігнорування в контексті Git. Очевидно, що цей термін цілком зрозумілий людям, які його розуміють, але все, що написано для того, щоб визначити щось для людей, які цього ще не знають, повинно пояснювати всі терміни, що мають визначення, характерні для контексту.
користувач34660

1
@ user34660 Ігнорувати означає саме це - Git не буде відслідковувати зміни у файлах, визначених (шаблонами) у .gitignoreфайлі. Навіть якщо ви їх зміните, git не відображатиме їх як змінені.
Мурейник

42

Це список файлів, які ви хочете, щоб git ігнорував у своєму робочому каталозі.

Скажімо, ви на Mac і у вас є .DS_Store файли у всіх ваших каталогах. Ви хочете, щоб git ігнорував їх, тому ви додасте .DS_Store як рядок у .gitignore. І так далі.

Документи git розкажуть вам все, що вам потрібно знати: http://git-scm.com/docs/gitignore


2
Ваш .DS_Storeсценарій, нарешті, перегукувався зі мною, оскільки, мабуть, я не чіплявся до цієї концепції, оскільки мені ще не потрібно було використовувати її в проекті. Дякую. Я в кінцевому підсумку використовував це як вихідну точку, оскільки я використовую всі різні операційні системи, відзначаючи конкретно # OS generated files #розділ.
Phoenixlaef

2
Я знаю, що я запізнився на цю тему, але дякую @AndyLester! Я початківець, коли справа стосується програмування та Github. Я вважаю, що багато відповідей, написаних на вирішення цього питання, заповнені термінами, які новачок може не зрозуміти (тобто, продукти компіляції, тимчасові ідентифікатори файлів створюють .... що таке h @ ll це!). Однак ваш опис Mac ідеальний у своїй елегантній простоті!
Везуччо

21

Виконуючи зобов’язання, ви не хочете випадково включати тимчасові файли або створювати певні папки. Тому використовуйте .gitignoreперелік елементів, які ви хочете ігнорувати при здійсненні.

Також важливо git status - одна з найбільш часто використовуваних команд, де ви хочете git statusперерахувати файли, які були змінені.

Ви хочете, щоб ваш git statusсписок виглядав чистим від небажаних файлів. Наприклад, я змінив, a.cpp, b.cpp, c.cpp, d.cpp & e.cppя хочу, щоб моє git statusбуло перелічити наступне:

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp

Я не хочуgit status перелічити такі змінені файли, як файли та файли посередника з папки збірки

git status
a.cpp
b.cpp
c.cpp
d.cpp
e.cpp
.DS_Store
/build/program.o
/build/program.cmake

Отже, щоб звільнитись від git statusпереліку цих проміжних тимчасових файлів і випадково зафіксував їх у репо, я повинен створити те, .gitignoreщо всі роблять. Все, що мені потрібно зробити, перераховує файли та папки в тому, .gitignoreщо я хочу виключити від здійснення.

Далі йде моє .gitignoreуникнення непотрібних файлів

/*.cmake
/*.DS_Store
/.user
/build

7

Є файли, в які ви не хочете, щоб Git завітав. Git розглядає кожен файл у вашій робочій копії як одну з трьох речей:

  1. відслідковується - файл, який був попередньо інсценований чи скоєний;
  2. untracked - файл, який не був інсценований чи скоєний; або
  3. ignored - файл, який Git явно сказав проігнорувати.

Проігноровані файли, як правило, є вбудованими артефактами та машиногенерованими файлами, які можна отримати з джерела сховища або інакше не повинні вчинятися. Деякі поширені приклади:

  • кеші залежностей, такі як вміст /node_modulesабо/packages
  • скомпільований код, такі , як .o, .pycі .classфайли
  • висновок збірки каталоги, такі як /bin, /outабо/target
  • файли , створені під час виконання, такі як .log, .lockабо.tmp
  • приховані системні файли, такі як .DS_StoreабоThumbs.db
  • персональні конфігураційні файли IDE, такі як .idea/workspace.xml

Проігноровані файли відстежуються у спеціальному файлі з назвою, .gitignoreякий зареєстровано у корені вашого сховища. Немає явної команди git ignore: замість цього .gitignoreфайл повинен бути відредагований і зроблений вручну, коли у вас є нові файли, які ви хочете ігнорувати. .gitignoreФайли містять шаблони, відповідні іменам файлів у вашому сховищі, щоб визначити, чи слід їх ігнорувати. Ось файл зразка.gitignore . Детальніше дивіться за цим посиланням


5

Основна мета .gitignore - щоб уникнути додавання невідповідних файлів тощо. Git

У мене в багатьох сховищах багато особистих записок / писанок: вони корисні для мене, але не для інших. Я б не хотів, щоб його завантажували в github, оскільки він просто заплутав би всіх, хто його читав. Хороша річ, що я можу попросити git "проігнорувати" ці файли. Єдиною вартістю такого підходу є те, що я не зможу відновити ці замітки, якщо мій комп'ютер вийде з ладу тощо.

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