#git #visual-studio #github
Вопрос:
Я больше не могу отправлять свое локальное репо на удаленный сервер на GitHub. Похоже, это было вызвано изменением учетных записей Visual Studio (это случалось и раньше, но я смог устранить проблему, добавив новые учетные данные git в диспетчер учетных данных Windows).
Прежде чем подробно объяснить проблему, я должен отметить, что:
- Я создал личные токены доступа (PATs) на GitHub и ранее использовал их без проблем
- У меня были учетные данные, настроенные в диспетчере учетных данных Windows, и это ранее работало
- Я обычно использую командную строку для выдачи команд git, поэтому эта проблема не проявляется при использовании git через Visual Studio
- Однако проблема связана с тем, что я переключаю учетные записи пользователей в Visual Studio (для публикации в разных учетных записях Azure).
Проблема в деталях:
В командной строке Windows я набираю
git push origin master
чтобы переместить главную ветвь на пульт дистанционного управления. Я делал это в течение долгого времени без проблем. Однако теперь я получаю окно входа в GitHub. Ввод моего имени пользователя и текущего токена PAT выдает ошибку, из-за которой мне не удалось войти в систему, и меня просят ввести эти учетные данные в командной строке. Это тоже не удается.
N. B. Я пробовал различные комбинации из вышеперечисленного, восстанавливая ПЭТ, а также (на всякий случай) с помощью моего пароля. Все это терпит неудачу!
Ранее я заходил в диспетчер учетных данных Windows, удалял / повторно вводил учетные данные git в качестве общих учетных данных. Это были:
Internet or network address: git:https//github.com
User name: <My-GitHub-UserName>
Password: <PAT-token>
В прошлый раз это произошло, это сработало, но теперь, похоже, нет!
Тогда мои вопросы:
- Кто-нибудь может предложить какие-либо исправления для этого? Даже какой-нибудь взлом был бы в порядке, просто чтобы я мог продолжить
- Может ли кто-нибудь подтвердить, что переключение учетных записей в Visual Studio вызывает эту проблему, и если да, то как это предотвратить?
Комментарии:
1. Очень полный вопрос, я хотел бы получить ответ. Возможно, имеет значение: можете ли вы добавить, какую установку Git вы используете и какую версию? И есть ли еще один Git, установленный на вашей машине? У меня возникают аналогичные проблемы, когда я случайно вызываю Git, установленный в Cygwin, вместо моей установки Git для Windows. Я отказался от подключения к github из cygwin/git, в то время как Git для Windows надежно использует мой диспетчер учетных данных Windows.
2. Способ, которым я мог бы представить переключение ПРОТИВ учетной записи, имеет значение, если это изменило конфигурацию вашего ПУТИ в качестве побочного эффекта и изменило, какая версия Git была вызвана.
3. Два вопроса в последовательности предполагают, что у вас настроено два помощника по учетным данным. Используйте
git config --list
или аналогично (добавьте--show-origin
также), чтобы найти, где установлены помощники. Тем не менее, несмотря на это, ввод правильного имени и ПЭТА должен работать, и, как и @joanis, я в замешательстве относительно того, что на самом деле происходит не так. Вы можете сделать это немного менее раздражающим, сократив список вспомогательных учетных данных, но на самом деле это ничего не исправит!4. Тогда можно с уверенностью сказать, что вы можете удалить
credential.helper=erase
конфигурацию.--show-origin
должен был показать вам, в каком файле он находится, просто откройте его в текстовом редакторе и удалите эту строку. Это будет выглядеть какhelper = erase
под[credential]
заголовком. Это все равно снимет это предупреждение. И на самом деле это, скорее всего, решит вашу проблему, потому что Git вызывает только одного помощника по учетным данным за вызов, он не пытается каскадировать. Так что выerase
, вероятно, затеняетеmanager
нужную вам настройку.5. Существует также
git config --unset credential.helper
команда, но я бы не стал использовать ее здесь, опасаясь сбить с толкуhelper = manager
ту, вместо тойhelper = erase
. Вы могли бы найти правильный способ отменить вызов, но ручное редактирование будет намного проще.