Как настроить авторизацию в git с помощью PAT для Azure Devops
Особенность PAT авторизации через PAT в том, что она работает поверх Basic аутентификации, используя пустое имя пользователя. Git не воспринимает авторизацию через Basic с пустым логином, потому нам нужно обходное решение.
Технически git позволяет специальной настройкой передавать дополнительные http заголовки, в случае если используется протокол http. Эту настройку можно:
-
Добавить на любой уровень настроек системные, глобальные настройки репозитория, я предпочитаю хранить такие настройки в каждом репозитории индивидуально
-
Передать в команду двумя способами (только для одноразового применения или для постоянного сохранения настройки). это работает с командой
clone
Потому готовим заголовок авторизации для http:
-
Генерирует PAT стандартным способом у меня, например, это будет
kdki7svwyzw25av6hnskkq77bow3vx7ed7l3xsobzr56giujayoq
-
Теперь добавляем в начало строки двоеточие и кодируем от получившейся строки base64 (можно воспользоваться публичным сервисом), если требуется выбрать кодировку, выберите utf-8. что получилось у меня:
Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=
-
В начало строки добавляем (с пробелом на конце)
Authorization: Basic
-
Готово!
В результате у нас должна получиться такая строка:
Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=
Теперь мы можем использовать эту строку в командах git:
действие | команда |
---|---|
клонируем без сохранения настройки | git -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=" clone https://ado.uri/repo |
клонируем, сохраняя настройку | git clone https://ado.uri/repo -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=" |
вытягиваем изменения без сохранения настройки | git -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=" pull |
вытягиваем изменения, сохраняя настройку | git pull -c http.extraHeader="Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=" |
Альтернативно, если репозиторий уже скачан можно добавить эту опцию руками в
файл .git/config
текст настройки в таком случае будет выглядеть так:
[http]
extraheader = Authorization: Basic Omtka2k3c3Z3eXp3MjVhdjZobnNra3E3N2JvdzN2eDdlZDdsM3hzb2J6cjU2Z2l1amF5b3E=
Будьте аккуратны - не задублируйте секцию http если она уже существует