42 lines
1.7 KiB
Markdown
42 lines
1.7 KiB
Markdown
|
---
|
|||
|
tags: ["git", "git-rebase"]
|
|||
|
---
|
|||
|
|
|||
|
## Исходные данные
|
|||
|
|
|||
|
В корпоративном #Gitlab есть репозиторий.
|
|||
|
|
|||
|
В настройках аккаунта включена 2-факторная аутентификация.
|
|||
|
|
|||
|
`origin` локального репозитория задан через `https://`.
|
|||
|
|
|||
|
Нужно вытянуть свежие изменения из `origin` в локальный реп.
|
|||
|
|
|||
|
## Ситуация
|
|||
|
|
|||
|
При выполнении `git pull` после ввода логина и пароля возникает ошибка:
|
|||
|
|
|||
|
```
|
|||
|
Username for '<https://git.example.com>': %логин%
|
|||
|
Password for '<https://user@git.example.com>': %пароль%
|
|||
|
remote: HTTP Basic: Access denied
|
|||
|
remote: You must use a personal access token with 'read_repository' or 'write_repository' scope for Git over HTTP.
|
|||
|
remote: You can generate one at <https://git.example.com/profile/personal_access_tokens>
|
|||
|
fatal: Authentication failed for '<https://git.example.com/%репозиторий%>'
|
|||
|
```
|
|||
|
|
|||
|
## Причина
|
|||
|
|
|||
|
При включенной #2FA нельзя напрямую использовать пароль, вместо этого придуманы личные токены доступа (Personal access tokens), все манипуляции должны происходить с его помощью.
|
|||
|
|
|||
|
## Решение
|
|||
|
|
|||
|
1. Создать токен, выставить права `read_repository` и/или `write_repository`
|
|||
|
2. Для аутентификации нужно вместо пароля вводить этот токен как он есть:
|
|||
|
|
|||
|
```
|
|||
|
Username for '<https://git.example.com>': user
|
|||
|
Password for '<https://user@git.example.com>': %токен%
|
|||
|
...
|
|||
|
```
|