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>': %токен%
|
||
...
|
||
```
|