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.46.1 → 2.51.0 no changes
-
2.46.0
2024-07-29
- 2.43.1 → 2.45.4 no changes
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 no changes
-
2.39.0
2022-12-12
- 2.35.1 → 2.38.5 no changes
-
2.35.0
2022-01-24
- 2.32.1 → 2.34.8 no changes
-
2.32.0
2021-06-06
- 2.27.1 → 2.31.8 no changes
-
2.27.0
2020-06-01
- 2.25.1 → 2.26.3 no changes
-
2.25.0
2020-01-13
- 2.1.4 → 2.24.4 no changes
-
2.0.5
2014-12-17
ОПИС
Git має внутрішній інтерфейс для зберігання та отримання облікових даних від системних помічників, а також для запиту імен користувачів та паролів у користувача. Команда git-credential надає цей інтерфейс скриптам, які можуть отримувати, зберігати або запитувати облікові дані так само, як і Git. Дизайн цього скриптового інтерфейсу моделює внутрішній C API; див. credential.h для отримання додаткової інформації про концепції.
git-credential приймає параметр "дії" в командному рядку (один з fill
, approve
або reject
) та зчитує опис облікових даних на stdin (див. INPUT/OUTPUT FORMAT).
Якщо дія — fill
, git-credential спробує додати атрибути "username" та "password" до опису, зчитуючи конфігураційні файли, зв’язуючись із будь-якими помічниками з налаштованих облікових даних або запитуючи користувача. Атрибути імені користувача та пароля з опису облікових даних потім виводяться на stdout разом із уже наданими атрибутами.
Якщо дія — approve
, git-credential надішле опис будь-яким налаштованим помічникам облікових даних, які можуть зберігати облікові дані для подальшого використання.
Якщо дія — reject
, git-credential надішле опис будь-яким налаштованим помічникам облікових даних, що може видалити будь-які збережені облікові дані, що відповідають опису.
Якщо дією є capability
, git-credential оголосить про будь-які підтримувані можливості на стандартний вивід.
Якщо дія — схвалити або відхилити, жодних виводів не повинно бути.
ТИПОВЕ ВИКОРИСТАННЯ ОБЛІКОВИХ ДОСВІДЧЕНЬ GIT
Застосунок, що використовує git-credential, зазвичай використовуватиме git
credential
, виконавши такі кроки:
-
Створіть опис облікових даних на основі контексту.
Наприклад, якщо нам потрібен пароль для
https://example.com/foo.git
, ми можемо згенерувати наступний опис облікових даних (не забудьте про порожній рядок в кінці; він повідомляєgit
credential
, що програма завершила передачу всієї наявної інформації):protocol=https host=example.com path=foo.git
-
Попросіть git-credential надати нам ім’я користувача та пароль для цього опису. Це робиться шляхом запуску
git
credential
fill
, передаючи опис з кроку (1) на стандартний ввід. Повний опис облікових даних (включаючи самі облікові дані, тобто логін та пароль) буде виведено на стандартний ввід, наприклад:protocol=https host=example.com username=bob password=secr3t
У більшості випадків це означає, що атрибути, вказані на вхідних даних, будуть повторюватися на виході, але Git також може змінити опис облікових даних, наприклад, видаливши атрибут
path
, коли протокол HTTP(s) таcredential.useHttpPath
має значення false.Якщо
git
credential
знав про пароль, цей крок міг не передбачати фактичного введення користувачем цього пароля (користувач міг ввести пароль для розблокування брелока, або ж жодної взаємодії з користувачем не було здійснено, якщо брелок вже був розблокований), перш ніж він повернувpassword=secr3t
. -
Використайте облікові дані (наприклад, перейдіть до URL-адреси за допомогою імені користувача та пароля з кроку (2)) і перевірте, чи їх прийнято.
-
Повідомити про успішне або невдале введення пароля. Якщо облікові дані дозволили успішно завершити операцію, їх можна позначити дією "схвалити", щоб
git
credential
повторно використав їх під час наступного виклику. Якщо облікові дані були відхилені під час операції, скористайтеся дією "відхилити", щобgit
credential
запитував новий пароль під час наступного виклику. У будь-якому випадку,git
credential
слід передати з описом облікових даних, отриманим на кроці (2) (який також містить поля, надані на кроці (1)).
ФОРМАТ ВВЕДЕННЯ/ВИВЕДЕННЯ
git
credential
зчитує та/або записує (залежно від використаної дії) інформацію про облікові дані у свій стандартний ввід/вивід. Ця інформація може відповідати або ключам, для яких git
credential
отримуватиме інформацію для входу (наприклад, хост, протокол, шлях), або фактичним даним облікових даних, які потрібно отримати (ім’я користувача/пароль).
Облікові дані розділені на набір іменованих атрибутів, по одному атрибуту на рядок. Кожен атрибут визначається парою ключ-значення, розділеними знаком =
(дорівнює), за яким йде символ нового рядка.
Ключ може містити будь-які байти, окрім =
, символу нового рядка або NUL. Значення може містити будь-які байти, окрім символу нового рядка або NUL. Рядок, включаючи завершальний символ нового рядка, не може перевищувати 65535 байтів, щоб реалізація могла ефективно виконувати розбір.
Атрибути з ключами, що закінчуються дужками масиву в стилі C [], можуть мати кілька значень. Кожен екземпляр багатозначного атрибута утворює впорядкований список значень – порядок повторюваних атрибутів визначає порядок значень. Порожній багатозначний атрибут (key[]=\n) очищує будь-які попередні записи та скидає список.
У всіх випадках усі байти обробляються як є (тобто лапки не використовуються, і не можна передавати значення з новим рядком або NUL). Список атрибутів завершується порожнім рядком або кінцем файлу.
Git розуміє такі атрибути:
-
protocol
-
Протокол, через який будуть використовуватися облікові дані (наприклад,
https
). -
host
-
Ім’я віддаленого хоста для мережевих облікових даних. Включає номер порту, якщо його було вказано (наприклад, «example.com:8088»).
-
path
-
Шлях, за допомогою якого будуть використовуватися облікові дані. Наприклад, для доступу до віддаленого https-репозиторію це буде шлях до репозиторію на сервері.
-
username
-
Ім’я користувача облікових даних, якщо воно вже є (наприклад, з URL-адреси, конфігурації, користувача або з раніше запущеної допоміжної програми).
-
password
-
Пароль облікових даних, якщо ми просимо їх зберегти.
-
password_expiry_utc
-
Згенеровані паролі, такі як токен доступу OAuth, можуть мати термін дії. Під час зчитування облікових даних з допоміжних програм,
git
credential
fill
ігнорує паролі, термін дії яких минув. Представлено як час Unix UTC, секунди з 1970 року. -
oauth_refresh_token
-
Токен оновлення OAuth може супроводжувати пароль, який є токеном доступу OAuth. Помічники повинні розглядати цей атрибут як конфіденційний, як і атрибут password. Сам Git не має спеціальної поведінки для цього атрибута.
-
url
-
Коли цей спеціальний атрибут зчитується
git
credential
, значення аналізується як URL-адреса та обробляється так, ніби її складові частини були прочитані (наприклад,url=https://example.com
поводитиметься так, ніби було наданоprotocol=https
таhost=example.com
). Це може допомогти викликаючим сторонам уникнути самостійного розбору URL-адрес.Зверніть увагу, що вказівка протоколу є обов’язковою, і якщо URL-адреса не вказує ім’я хоста (наприклад, «cert:///шлях/до/файлу»), облікові дані міститимуть атрибут імені хоста, значенням якого є порожній рядок.
Компоненти, яких бракує в URL-адресі (наприклад, у наведеному вище прикладі немає імені користувача), залишаться невстановленими.
-
authtype
-
Це вказує на те, що слід використовувати відповідну схему автентифікації. Загальні значення для HTTP та HTTPS включають
basic
,bearer
таdigest
, хоча останній є небезпечним і не повинен використовуватися. Якщо використовуєтьсяcredential
, його можна встановити на довільний рядок, що підходить для відповідного протоколу (зазвичай HTTP).Це значення не слід надсилати, якщо на вхідних даних не надано відповідну можливість (див. нижче).
-
credential
-
Попередньо закодовані облікові дані, що підходять для відповідного протоколу (зазвичай HTTP). Якщо цей ключ надсилається,
authtype
є обов’язковим, аusername
таpassword
не використовуються. Для HTTP Git об’єднує значенняauthtype
та це значення з одним пробілом, щоб визначити заголовокAuthorization
.Це значення не слід надсилати, якщо на вхідних даних не надано відповідну можливість (див. нижче).
-
ephemeral
-
Це логічне значення вказує, якщо воно має значення true (істина), що значення в полі
credential
не повинно зберігатися помічником облікових даних, оскільки його корисність обмежена в часі. Наприклад, значенняcredential
HTTP Digest обчислюється за допомогою nonce, і його повторне використання не призведе до успішної автентифікації. Це також може використовуватися для ситуацій з обліковими даними короткої тривалості (наприклад, 24 години). Значення за замовчуванням – false (хибність).Допоміжний засіб облікових даних все одно буде викликатися з командами
store
абоerase
, щоб він міг визначити, чи операція була успішною.Це значення не слід надсилати, якщо на вхідних даних не надано відповідну можливість (див. нижче).
-
state
[] -
Це значення забезпечує непрозорий стан, який буде передано цьому помічнику, якщо його буде викликано знову. Кожен окремий помічник облікових даних може вказувати це один раз. Значення повинно містити префікс, унікальний для помічника облікових даних, та ігнорувати значення, які не відповідають його префіксу.
Це значення не слід надсилати, якщо на вхідних даних не надано відповідну можливість (див. нижче).
-
continue
-
Це логічне значення, яке, якщо його ввімкнено, вказує на те, що ця автентифікація є нефінальною частиною багатоетапного етапу автентифікації. Це поширене явище в таких протоколах, як NTLM та Kerberos, де потрібні два раунди автентифікації клієнта, і встановлення цього прапорця дозволяє помічнику облікових даних реалізувати крок багатоетапної автентифікації. Цей прапорець слід надсилати лише тоді, коли потрібен подальший етап, тобто якщо очікується ще один раунд автентифікації.
Це значення не слід надсилати, якщо на вхідних даних не надано відповідну можливість (див. нижче). Цей атрибут є «одностороннім» від допоміжного засобу обробки облікових даних для передачі інформації до Git (або інших програм, що викликають
git
credential
). -
wwwauth
[] -
Коли Git отримує HTTP-відповідь, яка містить один або декілька заголовків автентифікації «WWW-Authenticate», Git передає їх допоміжним функціям облікових даних.
Кожне значення заголовка «WWW-Authenticate» передається як багатозначний атрибут «wwwauth[]», де порядок атрибутів такий самий, як вони відображаються у відповіді HTTP. Цей атрибут є «одностороннім» від Git для передачі додаткової інформації до помічників облікових даних.
-
capability
[] -
Це сигналізує про те, що Git або, залежно від обставин, допоміжний модуль підтримує відповідну можливість. Це можна використовувати для надання кращих, більш конкретних даних як частини протоколу. Директива
capability
[] повинна передувати будь-якому значенню, що залежить від неї, і ці директиви повинні бути першим елементом, оголошеним у протоколі.Наразі підтримуються дві можливості. Перша —
authtype
, яка вказує на те, що значенняauthtype
,credential
таephemeral
зрозумілі. Друга —state
, яка вказує на те, що значенняstate
[] таcontinue
зрозумілі.Необов’язково використовувати додаткові функції лише тому, що вони підтримуються, але їх не слід надавати без їхньої підтримки.
Невизнані атрибути та здібності мовчки відкидаються.
ФОРМАТ ВХОДУ/ВИВОДУ МОЖЛИВОСТЕЙ
Для git
credential
capability
формат дещо відрізняється. Спочатку робиться оголошення version
0
, щоб вказати поточну версію протоколу, а потім кожна можливість оголошується за допомогою рядка, такого як capability
authtype
. Допоміжні засоби для посвідчень також можуть реалізувати цей формат, знову ж таки з аргументом capability
. Додаткові рядки можуть бути додані в майбутньому; викликаючі сторони повинні ігнорувати рядки, які вони не розуміють.
Оскільки це нова частина протоколу допоміжних програм для облікових даних, старіші версії Git, а також деякі допоміжні програми для облікових даних можуть не підтримувати її. Якщо отримано ненульовий статус завершення або якщо перший рядок не починається зі слова version
та пробілу, викликаючі сторони повинні вважати, що можливості не підтримуються.
Мета цього формату полягає в тому, щоб однозначно відрізнити його від виводу облікових даних. Можна використовувати дуже прості допоміжні засоби облікових даних (наприклад, вбудовані скрипти оболонки), які завжди створюють ідентичний вивід. Використання окремого формату дозволяє користувачам продовжувати використовувати цей синтаксис, не турбуючись про правильну реалізацію оголошень про можливості або випадкове заплутування викликаючих, які запитують можливості.
GIT
Частина набору git[1]