Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.53.0
2026-02-02
- 2.51.1 → 2.52.0 no changes
-
2.51.0
2025-08-18
- 2.48.1 → 2.50.1 no changes
-
2.48.0
2025-01-10
- 2.46.1 → 2.47.3 no changes
-
2.46.0
2024-07-29
- 2.44.1 → 2.45.4 no changes
-
2.44.0
2024-02-23
- 2.43.2 → 2.43.7 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.39.1 → 2.42.4 no changes
-
2.39.0
2022-12-12
- 2.36.1 → 2.38.5 no changes
-
2.36.0
2022-04-18
- 2.33.1 → 2.35.8 no changes
-
2.33.0
2021-08-16
- 2.30.1 → 2.32.7 no changes
-
2.30.0
2020-12-27
- 2.23.1 → 2.29.3 no changes
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.15.4 → 2.17.6 no changes
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
- 2.9.5 → 2.11.4 no changes
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
- 2.5.6 no changes
-
2.4.12
2017-05-05
- 2.3.10 no changes
-
2.2.3
2015-09-04
- 2.1.4 no changes
-
2.0.5
2014-12-17
ОПИС
- альтернативна база даних об’єктів
-
Завдяки механізму замінників, репозиторій може успадкувати частину своєї бази даних обʼєктів від іншої бази даних об’єктів, яка називається «замінником».
- голий репозиторій
-
Голий репозиторій зазвичай є текою з відповідною назвою із суфіксом
.git, яка не має локально отриманої копії жодного з файлів, що перебувають в системі контролю версій. Тобто, всі адміністративні та керуючі файли Git, які зазвичай присутні в прихованій підтеці.git, безпосередньо присутні в теціrepository.git, і жодні інші файли не присутні та не отримані. Зазвичай видавці публічних репозиторіїв роблять голі репозиторії доступними. - об’єкт blob
-
Обʼєкт без типу, наприклад, вміст файлу.
- гілка
-
«Гілка» — це лінія розробки. Найновіший коміт в гілці називається верхівкою цієї гілки. Верхівка гілки посилається на вказівник, який переміщується вперед у міру продовження розробки на гілці. Одинрепозиторій Git може відстежувати довільну кількість гілок, але ваше робоче дерево повʼязане лише з однією з них («поточною» або «вибраною» гілкою), а вказівник HEAD вказує на цю гілку.
- кеш
-
Замінено на: індекс.
- ланцюг
-
Список обʼєктів, де кожен обʼєкт у списку містить посилання на свого наступника (наприклад, наступником коміту може бути один з його пращурів).
- набір змін
-
У BitKeeper/cvsps це позначається як «коміт». Оскільки Git зберігає не зміни, а стани, використання терміна «набори змін» у контексті Git насправді не має сенсу.
- перемикання гілок (checkout)
-
Дія оновлення всього або частини робочого дерева за допомогою обʼєкта tree або blob з бази даних обʼєктів, та оновлення індексу та HEAD, якщо все робоче дерево було переспрямоване на нову гілку.
- копіювання коміту (cherry-picking)
-
У термінології SCM «cherry pick» означає вибір підмножини змін із серії змін (зазвичай комітів) та їх запис як нової серії змін поверх іншої кодової бази. У Git це виконується за допомогою команди «git cherry-pick» для видобування зміни, внесених наявним комітом, та їх запису, враховуючи верхівку поточної гілки, як нового коміту.
- чисто
-
Робоче дерево вважається чистим, якщо воно відповідає ревізії, на яку посилається поточний головний вузол. Див. також «брудне».
- коміт
-
Як іменник: Окремий момент в історії Git; вся історія проєкту представлена як набір взаємоповʼязаних комітів. Слово "commit" часто використовується Git там, де інші системи контролю версій використовують слова "revision" або "version". Також використовується як скорочене позначення для commit object.
- концепція, представлення та використання графа комітів
-
Синонім структури DAG, утвореної комітами в базі даних об’єктів, на які посилаються верхівки гілок за допомогою їхніх ланцюжків пов’язаних комітів. Ця структура є визначеним графом комітів. Граф можна представити й іншими способами, наприклад, у вигляді файлу «commit-graph».
- файл commit-graph
-
Файл «commit-graph» (зазвичай пишеться через дефіс) є допоміжним представленням графу комітів, що прискорює обхід графа комітів. Файл «commit-graph» зберігається або в теці .git/objects/info, або в теці info додаткової бази даних об’єктів.
- обʼєкт commit
-
Обʼєкт, що містить інформацію про конкретну ревізію, таку як батьківські об’єкти, ім’я автора коміту, ім’я автора змін, дату, а також об’єкт дерева, що відповідає верхній теці збереженої ревізії.
- вказівник коміту
-
Об’єкт коміту або об’єкт, який можна рекурсивно перетворити на посилання на об’єкт коміту. До «комітоподібних» належать: об’єкт коміту, об’єкт тегу, що вказує на об’єкт коміту, об’єкт тегу, що вказує на об’єкт тегу, який вказує на об’єкт коміту, тощо.
- ядро Git
-
Фундаментальні структури даних та утиліти Git. Надає доступ лише до обмежених інструментів керування вихідним кодом.
- DAG
-
Спрямований ациклічний граф. Обʼєкти комітів утворюють спрямований ациклічний граф, оскільки вони мають батьків (спрямованість), а граф об’єктів коміту є ациклічним (не має ланцюжка, який починається і закінчується одним і тим самим об’єктом).
- підвішений обʼєкт (dangling object)
-
Недосяжний об’єкт, який не є досяжним навіть з інших недосяжних об’єктів; на підвішений об’єкт немає жодних посилань з жодного посилання або об’єкта у репозиторії.
- розгортання посилання
-
Стосовно символічного посилання: операція доступу до посилання, на яке вказує символічне посилання. Рекурсивне розгортання посилання передбачає повторення зазначеного вище процесу над отриманим посиланням доти, доки не буде знайдено несимволічне посилання.
Стосовно обʼєкта тегу: дія доступу до <обʼєкта, на який вказує тег. Теги розгортаються рекурсивно шляхом повторення операції над об’єктом-результатом, доки результат не матиме або вказаного <типу об’єкта (де це доречно), або будь-якого типу об’єкта, що не є «тегом». Синонімом «рекурсивного розгортання посилання» в контексті тегів є «peel».
Стосовно обʼєкта коміту: операція звернення до обʼєкта дерева коміту. До об’єктів комітів не можна звертатися рекурсивно.
Якщо не вказано інше, «розгортання посилання», як це використовується в контексті команд або протоколів Git, є неявно рекурсивним.
- відокремлений вказівник HEAD
-
Зазвичай HEAD зберігає імʼя гілки, і команди, що діють на історію, яку представляє HEAD, діють на історію, що веде до верхівки гілки, на яку вказує HEAD. Однак Git також дозволяє перейти до довільного коміту, який не обов’язково є верхівкою якоїсь конкретної гілки. HEAD у такому стані називається «відокремленим».
Зверніть увагу, що команди, які працюють з історією поточної гілки (наприклад,
gitcommitдля створення нової історії поверх неї), все одно працюють, навіть коли HEAD є відокремленим. Вони оновлюють HEAD так, щоб він вказував на вершину оновленої історії, не впливаючи на жодну гілку. Команди, що оновлюють або запитують інформацію про поточну гілку (наприклад,gitbranch--set-upstream-to, яка встановлює, з якою віддаленою гілкою інтегрується поточна гілка), очевидно, не працюють, оскільки в цьому стані немає (справжньої) поточної гілки, про яку можна запитати. - тека
-
Список, який ви отримуєте за допомогою "ls" :-)
- брудно (dirty)
-
Робоче дерево вважається «брудним», якщо воно містить зміни, які ще не були зафіксовані у поточній гілці.
- зловмисне злиття (evil merge)
-
«Зловмисне злиття» — це злиття, яке вносить зміни, яких немає у жодного з пращурів.
- перехід вперед (fast-forward)
-
«Перехід вперед» — це особливий вид операції злиття, коли у вас є ревізія> і ви «зливаєте» зміни іншої <<def_branch,гілки, яка є нащадком вашої гілки. У такому випадку ви не створюєте новий коміт><<def_merge,злиття, а просто оновлюєте свою гілку, щоб вона вказувала на ту саму ревізію, що й гілка, яку ви зливаєте. Це часто трапляється на гілці віддаленого відстеження віддаленого репозиторію.
- отримати (fetch)
-
Отримання гілки означає одержання посилання на вершину гілки з віддаленого репозиторію, визначення, яких об’єктів бракує в локальній базі даних об’єктів, та їхнє завантаження. Див. також git-fetch[1].
- файлова система
-
Лінус Торвальдс спочатку розробив Git як файлову систему простору користувача, тобто інфраструктуру для зберігання файлів і тек. Це забезпечило ефективність і швидкість роботи Git.
- Git-архів
-
Синонім до репозиторій.
- git-файл (gitfile)
-
Текстовий файл
.gitу корені робочого дерева, який вказує на теку, що є власне репозиторієм. Щоб дізнатися про правильне використання, див. git-worktree[1] або git-submodule[1]. Щоб ознайомитися з синтаксисом, див. gitrepository-layout[5]. - прищеплення (grafts)
-
За допомогою grafts можна обʼєднати дві різні гілки розвитку, записавши для комітів вигадану інформацію про походження. Таким чином можна змусити Git вважати, що набір батьківських, який має комітів, відрізняється від того, що було записано під час створення коміту. Налаштування здійснюється через файл
.git/info/grafts.Зверніть увагу, що механізм grafts є застарілим і може спричинити проблеми під час перенесення об’єктів між репозиторіями; див. git-replace[1] — це більш гнучка та надійна система для виконання тих самих завдань.
- хеш
-
У контексті Git, синонім імені обʼєкта.
- вершина гілки (head)
-
Іменоване посилання на коміт> на вершині <<def_branch,гілки. Вказівники зберігаються у файлі в теці
$GIT_DIR/refs/heads/, за винятком випадків використання упакованих посилань. (Див. git-pack-refs[1].) - HEAD
-
Поточна гілка. Детальніше: Ваше робоче дерево зазвичай походить від стану дерева, на яке вказує HEAD. HEAD — це посилання на одну з <вершин у вашому репозиторії, за винятком випадків використання <відокремленого HEAD, коли воно напряму посилається на довільний коміт.
- посилання на вершину (head ref)
-
Синонім до head.
- гачок
-
Під час звичайного виконання деяких команд Git здійснюються виклики додаткових скриптів, що дають розробнику можливість додавати функціонал або перевіряти дані. Зазвичай ці гачки дозволяють попередньо перевірити команду та, за необхідності, перервати її виконання, а також надсилати повідомлення після завершення операції. Скрипти гачків знаходяться в теці
$GIT_DIR/hooks/, і їх можна ввімкнути, просто видаливши суфікс.sampleз імені файлу. У попередніх версіях Git їх потрібно було зробити виконуваними. - індекс
-
Збірка файлів зі статистичною інформацією, вміст яких зберігається у вигляді об’єктів. Індекс — це збережена версія вашого робочого дерева. Насправді він може містити також другу і навіть третю версії робочого дерева, які використовуються під час злиття.
- елемент індексу (index entry)
-
Інформація про конкретний файл, що зберігається в індексі. Елемент індексу може бути не обʼєднаний, якщо процес обʼєднання було розпочато, але ще не завершено (тобто якщо індекс містить кілька версій цього файлу).
- майстер, головна гілка
-
Стандартна гілка розробки. Щоразу, коли ви створюєте Git репозиторій, створюється гілка з назвою «master», яка стає активною. У більшості випадків вона містить локальну версію коду, хоча це лише традиція і не є обов’язковим.
- обʼєднання, злиття (merge)
-
Як дієслово: означає перенесення вмісту іншої гілки (можливо, із зовнішнього репозиторію) до поточної гілки. У випадку, якщо гілка, що об’єднується, походить з іншого репозиторію, це здійснюється шляхом попереднього отримання віддаленої гілки з подальшим об’єднанням отриманого вмісту з поточною гілкою. Комбінація операцій fetch та merge називається pull. Обʼєднання виконується автоматичним процесом, який ідентифікує зміни, зроблені з моменту розгалуження гілок, а потім застосовує всі ці зміни разом. У випадках, коли зміни конфліктують, для завершення обʼєднання може знадобитися ручне втручання.
Як іменник: означає, якщо це не перехід вперед (fast-forward), що успішне злиття призводить до створення нового коміту, що відображає результат злиття та має пращурами вершини обʼєднаних гілок. Цей коміт називають «комітом злиття» або іноді просто «злиттям».
- обʼєкт
-
Одиниця зберігання даних у Git. Вона однозначно ідентифікується за допомогою хешу SHA-1 її вмісту. Отже, об’єкт не можна змінити.
- база даних обʼєктів
-
Зберігає набір «об’єктів», причому кожен окремий об’єкт ідентифікується за допомогою імені об’єкта. Зазвичай об’єкти зберігаються в теці
$GIT_DIR/objects/. - ідентифікатор обʼєкта, ID обʼєкта, oid
-
Синоніми імені обʼєкта.
- імʼя обʼєкта
-
Унікальний ідентифікатор об’єкта. Ім’я об’єкта зазвичай представлено шістнадцятковим рядком довжиною 40 символів. Неформально також називається SHA-1.
- тип обʼєкта
-
Один з ідентифікаторів "commit", "tree", "tag" або "blob", що описує тип обʼєкта.
- восьминіг (octopus)
- зробити сиротою (orphan)
-
Перехід на гілку, якої ще не існує (тобто на ненароджену гілку). Після такої операції перший створений коміт стає комітом без батьківського елемента, започатковуючи нову історію.
- оригінал (origin)
-
Стандартний висхідний репозиторій. Більшість проєктів мають принаймні один висхідний проєкт, за яким вони стежать. Як правило, для цього використовується «origin». Нові оновлення з висхідного проєкту будуть завантажуватися у гілки віддаленого відстеження з іменами origin/назва-гілки-висхідного-проєкту, які можна переглянути за допомогою команди
gitbranch-r. - накладання (overlay)
-
Лише оновлює та додає файли до робочої теки, але не видаляє їх — аналогічно тому, як команда cp -R оновлює вміст у цільовій теці. Це стандартний режим під час використання команди checkout для отримання файлів з індексу> або <<def_tree-ish,деревоподібної структури. На відміну від цього, режим no-overlay також видаляє відстежувані файли, яких немає у джерелі, подібно до команди rsync --delete.
- пакунок (pack)
-
Набір об’єктів, об’єднаних в один файл (з метою економії місця або для зручності передачі).
- індекс пакунка (pack index)
-
Список ідентифікаторів та іншої інформації про об’єкти в пакунку, що полегшує ефективний доступ до вмісту пакунка.
- специфікатор шляху (pathspec)
-
Шаблон, який використовується для обмеження шляхів у командах Git.
Специфікатори шляхів використовуються в командному рядку команд «git ls-files», «git ls-tree», «git add», «git grep», «git diff», «git checkout» та багатьох інших для обмеження області дії операцій певною частиною дерева або робочого дерева. Дивіться документацію до кожної команди, щоб дізнатися, чи шляхи є відносними до поточної теки чи верхнього рівня. Синтаксис специфікатора шляху наступний:
-
будь-який шлях збігається сам із собою
-
специфікатор шляху до останньої скісної риски позначає префікс теки. Діапазон дії цього специфікатора обмежений цим піддеревом.
-
решта специфікатора шляху є шаблоном для решти імені шляху. Шляхи, відносно префікса теки, будуть порівнюватися з цим шаблоном за допомогою fnmatch(3); зокрема, символи «*» та «?» можуть мати збіг з роздільниками тек.
Наприклад, Documentation/*.jpg матиме збіг зі всіма файлами .jpg у піддереві Documentation, включаючи Documentation/chapter_1/figure_1.jpg.
Специфікатор шляху, що починається з двокрапки
:, має особливе значення. У скороченій формі за початковою двокрапкою:йдуть нуль або більше літер «магічної сигнатури» (яка, за бажанням, може закінчуватися ще однією двокрапкою:), а решта — це шаблон для зіставлення зі шляхом. «Магічна сигнатура» складається з символів ASCII, які не є ні алфавітно-цифровими, ні символами-замінниками, ні спеціальними символами регулярних виразів, ні двокрапкою. Опціональну двокрапку, що завершує «магічну сигнатуру», можна опустити, якщо шаблон починається з символу, який не належить до набору символів «магічної сигнатури» і не є двокрапкою.У повній формі після початкової двокрапки
:йде початкова дужка (, список із нуля або більше «магічних слів», розділених комами, та закривальна дужка ), а решта — це шаблон, який потрібно зіставити зі шляхом.Специфікатор шляху, що містить лише двокрапку, означає, що «специфікатора шляху немає». Цю форму не слід поєднувати з іншими специфікаторами шляху.
- top (верх)
-
Магічне слово
top(магічна сигнатура:/) дозволяє шукати за шаблоном, починаючи з кореневої теки робочого дерева, навіть якщо ви виконуєте команду з підтеки. - literal (літерал)
-
Символи-підстановки у шаблоні, такі як
*або ?, обробляються як літерали. - icase
-
Пошук без врахування регістру.
- glob (глоб)
-
Git трактує цей шаблон як шаблон оболонки, придатний для використання функцією fnmatch(3) із прапорцем FNM_PATHNAME: символи-замінники в шаблоні не будуть мати збігу з символом «/» в імені шляху. Наприклад, «Documentation/*.html» збігається з «Documentation/git.html», але не з «Documentation/ppc/ppc.html» або «tools/perf/Documentation/perf.html».
Дві зірочки поспіль («
**») у виразах, що порівнюються з повним іменем шляху, можуть мати особливе значення:-
Символ «
**», за яким йде скісна риска, означає пошук у всіх теках. Наприклад, «**/foo» знаходить файл або теку «foo» у будь-якому місці. «**/foo/bar» знаходить файл або теку «bar» у будь-якому місці, що знаходиться безпосередньо в теці «foo». -
Наприкінці «
/**» вказує на всі елементи всередині. Наприклад, «abc/**» відповідає всім файлам у теці «abc», відносно розташування файлу.gitignore, на будь-якій глибині. -
Скісна риска, за якою йдуть дві зірочки поспіль, а потім ще одна скісна риска, відповідає нулю або більше тек. Наприклад, «
a/**/b» збігається з «a/b», «a/x/b», «a/x/y/b» тощо. -
Інші послідовні зірочки вважаються недійсними.
Магічне слово «glob» несумісне з «literal».
-
- attr (атрибут)
-
Після
attr:йде список «вимог до атрибутів», розділених пробілами; усі ці вимоги мають бути виконані, щоб шлях вважався таким, що відповідає шаблону; це доповнює звичайне зіставлення з не-магічними шаблонами шляхів. Див. gitattributes[5].Кожна з вимог до атрибутів шляху має один із таких форм:
-
"
ATTR" вимагає, щоб атрибутATTRбув встановлений. -
"
-ATTR" вимагає, щоб атрибутATTRбув невстановлений. -
"
ATTR=VALUE" вимагає, щоб атрибутATTRмав значенняVALUE. -
"
!ATTR" вимагає, щоб атрибутATTRбув невизначеним.Зверніть увагу, що під час порівняння з об’єктом tree атрибути все одно отримуються з робочого дерева, а не з вказаного об’єкта tree.
-
- exclude (виключити)
-
Після того як шлях має збіг з будь-яким специфікатором шляху, що не є критерієм виключення, він перевіряється на відповідність усім критеріям виключення (магічний символ:
!або його синонім^). У разі збігу шлях ігнорується. Якщо специфікаторів шляху, що не є критеріями виключення, немає, виключення застосовується до набору результатів так, ніби запит було виконано без будь-яких специфікаторів шляху.
-
- пращур (parent)
-
Обʼєкт commit object містить (можливо порожній) список логічних попередників у ланцюжку розробки, тобто своїх пращурів.
- розгортання (peel)
-
Операція рекурсивного розгортання об’єкта тегу.
- кирка (pickaxe)
-
Термін pickaxe стосується опції для процедур diffcore, яка допомагає відібрати зміни, що додають або видаляють певний текстовий рядок. За допомогою опції
--pickaxe-allїї можна використовувати для перегляду повного набору змін, який вніс або видалив, наприклад, конкретний рядок тексту. Див. git-diff[1]. - внутрішній інтерфейс (plumbing)
-
Мила назва для core Git. Цей термін можна порівняти з прокладанням труб (трубопроводом), зʼєднанням одних частин з іншими, що відбувається поза полем зору користувача.
- високорівневий інтерфейс, порцеляна (porcelain)
-
Мила назва для програм та наборів програм, що базуються на core Git і забезпечують доступ до основних функцій Git на високому рівні. «Porcelains» являють собою скоріше інтерфейс SCM, ніж plumbing. Якщо порівнювати з домом, то порцелянові вироби (рукомийники, унітази, зливні бачки) є тим, чим ми користуємось безпосередньо, в той час, як для надання послуг вода та стоки мають йти по трубах (plumbing).
- посилання на робоче дерево (per-worktree ref)
-
Посилання, що відносяться до worktree, а не є глобальними. Наразі це лише HEAD та будь-які посилання, що починаються з
refs/bisect/, але згодом до них можуть додатися й інші нестандартні посилання. - псевдопосилання (pseudoref)
-
Посилання, семантика якого відрізняється від звичайних посилань. Ці посилання можна переглядати за допомогою звичайних команд Git, але їх неможливо оновлювати за допомогою таких команд, як git-update-ref[1].
Git відомі такі псевдопосилання:
-
FETCH_HEADзаписується командами git-fetch[1] або git-pull[1]. Може посилатися на декілька ідентифікаторів об’єктів. Кожен ідентифікатор об’єкта супроводжується метаданими, що вказують, звідки його було отримано та його стан отримання. -
MERGE_HEADстворюється командоюlinkgit:git-merge[1] під час розвʼязання конфліктів злиття. Містить всі ідентифікатори комітів, які обʼєднуються.
-
- втягнути (pull)
-
Втягування гілки означає виконання команд fetch та merge. Див. також git-pull[1].
- надіслати (push)
-
Надсилання гілки означає отримання посилання на head ref цієї гілки з віддаленого репозиторію, визначення, чи є воно предком локального head ref гілки, і в цьому випадку перенесення всіх обʼєктів, які є доступними з локального head ref і яких немає у віддаленому репозиторії, до віддаленої бази даних обʼєктів та оновлення віддаленого head ref. Якщо віддалений head не є предком локального head, операція push завершується невдачею.
- досяжність (reachable)
-
Всі пращури даного коміту вважаються «доступними» з цього коміту. У більш загальному сенсі, один обʼєкт> є доступним з іншого, якщо ми можемо дістатися до нього з іншого за допомогою <<def_chain,ланцюжка, який слідує за тегами до будь-чого, що вони позначають, за коммітами до їхніх батьків або дерев, та за деревами до дерев або блобами, які вони містять.
- бітові мапи доступності (reachability bitmaps)
-
Бітові мапи доступності зберігають інформацію про (доступність) вибраного набору комітів у файлі пакунка або індексі мультипакунка (MIDX) для прискорення пошуку об’єктів. Ці бітові мапи зберігаються у файлі з розширенням «.bitmap». У репозиторії може використовуватися не більше одного файлу бітової мапи. Файл бітової мапи може належати або до одного пакунка, або до індексу мультипакунку репозиторію (якщо він існує).
- перебазування (rebase)
-
Застосовує серію змін із гілки до іншої базової гілки та встановлює верхівку цієї гілки до отриманого результату.
- посилання (ref)
-
Імʼя, яке вказує на імʼя обʼєкта або інше посилання (останнє називається символічне посилання). Для зручності посилання іноді можна скорочувати, коли воно використовується як аргумент команди Git; детальніше див. gitrevisions[7]. Посилання зберігаються в репозиторії.
Простір імен посилань є ієрархічним. Імена посилань повинні починатися з
refs/або розташовуватися в корені ієрархії. Для останнього їх імена повинні відповідати таким правилам:-
Імʼя складається лише з символів верхнього регістру або символів підкреслення.
-
Імʼя закінчується на "
_HEAD" або дорівнює "HEAD".У корені ієрархії є деякі нерегулярні посилання, які не відповідають цим правилам. Наведений нижче список є вичерпним і не буде розширюватися в майбутньому:
-
AUTO_MERGE -
BISECT_EXPECTED_REV -
NOTES_MERGE_PARTIAL -
NOTES_MERGE_REF -
MERGE_AUTOSTASHРізні субієрархії використовуються для різних цілей. Наприклад, ієрархія
refs/heads/використовується для представлення локальних гілок, тоді як ієрархіяrefs/tags/— для представлення локальних тегів.
-
- журнал змін (reflog)
-
Reflog показує локальну «історію» ref. Іншими словами, він може повідомити, якою була третя остання ревізія в цьому репозиторії та яким був поточний стан цього репозиторію вчора о 21:14. Детальніше див. git-reflog[1].
- специфікатор посилання (refspec)
-
«Refspec» використовується функціями fetch та push для опису відповідності між віддаленими ref та локальними посиланнями. Детальніше див. git-fetch[1] або git-push[1].
- віддалений репозиторій
-
Репозиторій, який використовується для відстеження цього ж проекту, але розміщений деінде. Щоб встановити зв’язок із віддаленими репозиторіями, див. fetch або push.
- гілка дистанційного відстеження (remote-tracking branch)
-
Ref, що використовується для відстеження змін з іншого репозиторію. Зазвичай має вигляд «refs/remotes/foo/bar» (що вказує на те, що відстежується гілка з назвою «bar» у віддаленому репозиторії з назвою «foo») і відповідає правій частині налаштованого виразу для завантаження refspec. Гілка відстеження віддаленого репозиторію не повинна містити прямих модифікацій або мати локальні коміти, зроблені в ній.
- репозиторій
-
Сукупність refs разом із базою даних об’єктів, що містить усі об’єкти, які є доступними з посилань, можливо, у супроводі метаданих з одного або декількох porcelains`. Репозиторій може спільно використовувати базу даних об’єктів з іншими репозиторіями за допомогою механізму альтернатив.
- розвʼязання [конфліктів] (resolve)
-
Операція ручного виправлення того, що залишилося після невдалого автоматичного виконання merge.
- ревізія (revision)
-
Синонім до commit (іменник).
- перемотування назад (rewind)
-
Відкидає частину розробки, тобто переносить head на попередню ревізію.
- SCM
-
Інструмент управління вихідним кодом, теж саме що й управління версіями, система контролю версій.
- SHA-1
-
"Secure Hash Algorithm 1"; криптографічна хеш-функція. У контексті Git використовується як синонім object name.
- поверхневий клон (shallow clone)
-
Здебільшого синонім shallow repository, але ця фраза чіткіше вказує на те, що його було створено за допомогою команди
gitclone--depth=.... - поверхневий репозиторій (shallow repository)
-
Поверхневий репозиторій має неповну історію, деякі з комітів якої мають знищених пращурів (іншими словами, Git має вдати, що ці коміти не мають батьківських комітів, навіть якщо вони записані в обʼєкт коміту). Це іноді корисно, коли вас цікавить лише недавня історія проєкту, хоча реальна історія, записана у висхідному репозиторії, набагато більша. Поверхневий репозиторій створюється шляхом надання опції
--depthдля git-clone[1], а його історію пізніше можна поглибити за допомогою git-fetch[1]. - елемент у сховищі (stash entry)
-
Обʼєкт який використовується для тимчасового зберігання вмісту робочої ( <<def_dirty,dirty>) теки та індексу для подальшого використання.
- субмодуль (submodule)
-
Репозиторій, що містить історію окремого проєкту всередині іншого репозиторію (останній називається superproject).
- суперпроєкт (superproject)
-
Репозиторій, який посилається на репозиторії інших проєктів (субмодулі) у своєму робочому дереві. Суперпроєкт містить відомості про назви (але не містить копій) обʼєктів комітів субмодулів, що містяться в ньому.
- символічне посилання (symref)
-
Символічне посилання: замість того, щоб містити сам ідентифікатор SHA-1, має формат ref: refs/some/thing, і під час посилання на нього воно рекурсивно переходить до цього посилання. HEAD є яскравим прикладом символічного посилання. Символічні посилання управляються командою git-symbolic-ref[1].
- тег (tag)
-
Обʼєкт ref у просторі імен
refs/tags/, який вказує на обʼєкт довільного типу (зазвичай тег вказує або на tag, або на обʼєкт коміту). На відміну від head, тег не оновлюється командоюcommit. Тег Git не має нічого спільного з тегом Lisp (який у контексті Git називався б object type). Тег найчастіше використовується для позначення певної точки в ланцюжку комітів. - обʼєкт тегу
-
Обʼєкт, що містить ref, що вказує на інший обʼєкт, який може містити повідомлення, як і обʼєкт commit. Він також може містити підпис (PGP), і в цьому випадку він називається "підписаним обʼєктом тегу".
- тематична гілка (topic branch)
-
Звичайна гілка Git, яка використовується розробником для визначення концептуальної лінії розробки. Оскільки гілки дуже прості та не вимагають великої кількості ресурсів, часто бажано мати кілька невеликих гілок, кожна з яких містить дуже чітко визначені концепції або невеликі інкрементальні, але повʼязані зміни.
- трейлер (trailer)
-
Метадані ключ-значення. Трейлери можуть знаходитись в кінці повідомлення коміту. Також можуть називатися «футерами» або «тегами». Див. git-interpret-trailers[1].
- дерево (tree)
-
Або робоче дерево, або обʼєкт tree разом із своїми залежними обʼєктами blob та tree (тобто збережене представлення робочого дерева).
- об’єкт дерево (tree object)
-
Обʼєкт, що містить список імен файлів та режимів, а також посилання на повʼязані блоб-обʼєкти та/або обʼєкти tree. tree є еквівалентом directory.
- деревоподібний (treeish, tree-ish)
-
Обʼєкт tree або обʼєкт, який можна рекурсивно розгорнути в обʼєкт tree. Розгортання обʼєкта коміт повертає обʼєкт дерево, що відповідає верхній теці ревізії. Наступні обʼєкти є деревоподібними: commit-подібні, обʼєкт дерево, об’єкт tag, що вказує на обʼєкт дерева, обʼєкт tag, що вказує на обʼєкт tag, що вказує на обʼєкт дерева тощо.
- ненароджений
-
HEAD може вказувати на гілку, якої ще не існує і на якій ще немає жодного коміту, і така гілка називається ненародженою гілкою. Найтиповіший спосіб, яким користувачі стикаються з ненародженою гілкою, — це створення репозиторію заново без клонування з іншого місця. HEAD вказуватиме на «main» (або «master», залежно від вашої конфігурації) гілку, яка ще не народилася. Також деякі операції можуть перемістити вас на ненароджену гілку за допомогою параметра orphan.
- необʼєднаний індекс (unmerged index)
-
Індекс, що містить необʼєднані елементи index.
- недосяжний обʼєкт
-
Обʼєкт, який не є досяжним з гілки, тегу або будь-якого іншого посилання.
- висхідна гілка (upstream branch)
-
Стандартна гілка, яка обʼєднується з вказаною гілкою (або на яку перебазується поточна гілка). Налаштовується через branch.<name>.remote та branch.<name>.merge. Якщо висхідною гілкою для гілки A є origin/B, можна сказати, що "A відстежує стан origin/B".
- робоче дерево (working tree)
-
Дерево фактично отриманих файлів. Робоче дерево зазвичай містить вміст дерева комітів HEAD, а також будь-які локальні зміни, які ви внесли, але ще не зберегли в індексі командою
commit. - робоче дерево (worktree)
-
До репозиторію може бути прикріплено нуль (тобто голий репозиторій) або одне чи декілька робочих дерев. Одне «робоче дерево» складається з «робочого дерева» та метаданих репозиторію, більшість з яких є спільними для інших робочих дерев одного репозиторію, а деякі з них підтримуються окремо для кожного робочого дерева (наприклад, індекс, HEAD та псевдопосилання, такі як MERGE_HEAD, посилання для кожного робочого дерева та файл конфігурації для кожного робочого дерева).
GIT
Частина набору git[1]