Windows: git имеет старое имя пользователя github, can not change git user

У меня есть 2 аккаунта github, старые и новые. Когда я проверяю репо на новом, я не могу его зафиксировать, поскольку он говорит, что мой старый пользователь github не авторизовался.

Допустим, что мое старое имя пользователя учетной записи github устарело, а электронная почта [email protected] Допустим, новое имя пользователя учетной записи github является новым, а электронная почта [email protected]

У старой учетной записи github нет связанного с ней ключа SSH. У новой учетной записи есть мой ключ ssh. Поскольку я использую окна, ключи ssh - это что-то вроде кошмара, потому что putty/pagent использует ppk-формат, но openssh, используемый gitbash, использует rsa. Некоторое время назад мне удалось преобразовать свой ppk в rsa и поместить его в мои пользователи Windows.ssh.

Я сделал это:

$ git config --global user.name new
$ git config --global user.email [email protected]

Если я это сделаю:

$ git config --global -l

или

$ git config -l

Я вижу:

 [email protected]
 user.name=new

Когда я пытаюсь сделать $git push origin

remote: Permission to new/test.git denied to old.
fatal: unable to access 'https://github.com/new/test.git/': 
403 user old not authorised

Я получаю эту ошибку, если я использую gitbash, черепаху или код VS для нажатия.

Если я удалю клонированное репо и снова скрою его с нуля, тогда сделайте что-нибудь, одну и ту же проблему.

$ git clone [email protected]:new/test.git

Любая идея, почему и где ее получает старый пользователь? Нет ссылки на старых пользователей github в любом месте на моей машине, и это блокирует меня от возможности выполнять любую работу.

Кажется, нет никакого способа удалить старого пользователя из github, но даже если бы я мог, он все равно не может решить проблему. Я не мог работать в течение нескольких месяцев, потому что я не могу ничего сделать для github.

Еще одна вещь, которую я пробовал, - это отредактировать .git/config после клонирования репо. Я попытался изменить https на ssh url, так как https никогда не работал на меня за все годы, используя github. https позволяет вам клонировать, но никогда не нажимать. Если я проверил с помощью ssh, используя нужное количество vodoo, он работал, но теперь он всегда получает старого пользователя без видимых причин.

Ответ 1

невозможно получить доступ к https://github.com/new/test.git/ ':

Это означает: SSH не задействован. На всех.
И user.name/user.email не имеет ничего общего с аутентификацией.

Поскольку вы используете https, Git будет использовать первые кэшированные учетные данные, которые он найдет для github.com.
Проверьте возвращаемое значение git config credential.helper
Например, в окнах это будет диспетчер учетных данных Windows.

Вы должны как минимум указать новую учетную запись GitHub в своем URL-адресе:

cd /path/to/your/local/repo
git remote set-url origin https://<newGitHubAccount>@github.com/newGitHubAccount/test.git

Затем a Git push должен вызвать всплывающее окно с запросом вашего нового пароля учетной записи GitHub.

Если вы хотите, вы также можете вернуться к SSH.
Вы можете управлять несколькими SSH-ключами как которые я описываю здесь.

Ответ 2

Вы можете указать имя пользователя для аутентификации отдельно от имени автора Git, используя credential.user. Вы можете установить это глобально (git config --global credential.user mylogin) или только для одного репозитория. Это позволит решить проблему с изменением подлинности https. Github с HTTPS позволяет вам нажать. Чтобы отладить проблемы там, запустите команду Git под GIT_CURL_VERBOSE=1, чтобы просмотреть заголовки веб-страниц. например: GIT_CURL_VERBOSE=1 git ls-remote https://github.com/username/repo.git. Если вы включили двухфакторную аутентификацию, вы не можете использовать свой обычный пароль, но должны использовать ключ, который вы получаете с веб-сайта.

Обратите внимание, что puttygen может импортировать пару ключей SSH RSA и преобразовать его в файл ключа PPK, а также сделать обратное, чтобы вы могли конвертировать ключи из openssh в putty.

Если вы настроите использование SSH-ключей, то ключ используется для вашей личности. Вы можете запустить команду Git под GIT_TRACE=1, чтобы увидеть, что она на самом деле работает. Если это putty/plink, вам необходимо проверить информацию сеанса шпаклевки, хранящуюся в реестре, и посмотреть, какой ключ был связан с используемым сеансом github. Если openssh, то ключ должен находиться в $HOME/.ssh/id_rsa, и вы можете проверить, какой из них у вас есть.

Ответ 3

user.name в вашей конфигурации указано имя пользователя, указанное в сообщениях фиксации, а не имя пользователя, используемое для авторизации в репозитории git.

Когда вы клонируете удаленное репо, какое имя пользователя вы передаете в github/находится в URL-адресе? Для существующих репозиций, что показывает git remote -v?

В качестве альтернативы вы можете использовать кеш учетных данных - можете ли вы попробовать git credential-cache exit и посмотреть, очищает ли этот кеш?

Ответ 4

Попробуйте использовать "credential.helper = manager" вместо "credential.helper = store". У меня была та же проблема, что и у Джона Литтла: несмотря на то, что я изменил свое имя пользователя и адрес электронной почты, а команда git config --list правильно указала значения новой учетной записи, я все равно не мог получить доступ к удаленному репозиторию, пока я не изменил credential.helper на 'менеджер'.

HTH, Ремус