#Как проявляется ошибка и когда применим способ
После замены токена удалённый сервер Git может продолжать получать прежние учётные данные из менеджера паролей или из настроенного URL. Нужно определить используемый адрес и диспетчер авторизации, затем удалить только старую запись, не раскрывая токен.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Сохранён устаревший HTTPS-токенМенеджер учётных данных повторно отдаёт старый секрет. | Push запрашивает доступ, но сервер отвечает 401/403 с уже изменённым токеном. | Обновить конкретную запись в диспетчере учётных данных. |
| Смешаны SSH и HTTPSДля URL типа git@host:... токен HTTPS вообще не используется. | git remote -v показывает SSH-адрес, хотя обновляли PAT. | Проверить применяемый протокол и ключи. |
#Пошаговая диагностика и решение
- 1. Определите способ подключения без публикации секретовВ терминале нужного репозитория выполните git remote -v. Если адрес начинается с https://, речь может быть о токене и диспетчере учётных данных. Если используется git@хост, проверяйте SSH-ключи. Если в URL уже указан токен, считайте его скомпрометированным и отзовите у провайдера.
- Только чтение; не пересылайте вывод, если URL содержит логин или секретLinux · Терминал (Bash)КомандаТолько чтение; не пересылайте вывод, если URL содержит логин или секрет.
git remote -v
- 2. Уточните, какой менеджер используетсяВыполните git config --show-origin --get-all credential.helper. Команда покажет системные, глобальные и локальные помощники хранения, если они настроены. Не меняйте их все одновременно: это может нарушить вход в другие репозитории.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаЧтение настроенных помощников; при пустом выводе у Git нет такой записи в прочитанных областях.
git config --show-origin --get-all credential.helper
- 3. Проверьте права нового токена у провайдераОткройте сайт сервера Git в браузере и перейдите в настройки токенов своей учётной записи (названия различаются у GitHub/GitLab и самостоятельных серверов). Убедитесь, что токен действителен и у него есть право записи именно в требуемый репозиторий. Не добавляйте ему лишние полномочия.
- 4. Удалите только старую запись для нужного сервераВ Windows откройте «Панель управления → Учётные записи пользователей → Диспетчер учётных данных → Учётные данные Windows», найдите запись git/https нужного сервера, удалите только её после подтверждения. В macOS — «Связка ключей», найдите запись сервера. В Linux используйте настроенный менеджер секретов. Не чистите все пароли ОС.
- 5. Повторите безопасную операцию чтенияВыполните git fetch origin, чтобы спровоцировать обновлённую авторизацию. При запросе имени и секрета используйте рекомендованный провайдером способ: окно входа или токен вместо пароля, если это применимо. Вводимые данные не должны попасть в историю команд оболочки.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаОбновляет удалённые ссылки; может инициировать запрос учётных данных, не отправляет коммиты.
git fetch origin
- 6. Проверьте права отправки без обхода политики веткиПосле успешного чтения и при наличии разрешённой тестовой ветки отправьте её обычным git push. Если ошибка теперь говорит о protected branch, токен может работать, а запрет связан с правилами проекта. Не используйте чужую учётную запись и не повышайте права самостоятельно.
- 7. Закрепите результат и защитите секретВ хранилище учётных данных должен остаться только действующий способ входа для нужного сервера. Если старый токен был раскрыт в URL или журнале, немедленно отзовите его, смените секрет и проверьте доступы согласно процедуре безопасности.
#Проверка результата и действия при повторении
После удаления конкретной старой записи git fetch использует актуальную авторизацию, а разрешённый push проходит. Если отправка по-прежнему запрещена, сравните права репозитория и правила веток; не пытайтесь обходить их.
Если на указанном шаге результат отличается, остановитесь и запишите первое полное сообщение об ошибке, версию инструментов и проверенное состояние до исправления. Не переходите к опасным действиям на действующем проекте: повторите проверку на отдельной копии, верните сохранённые файлы и только затем выбирайте следующую причину.