Git использует неверный адрес электронной почты для push - PullRequest
0 голосов
/ 29 августа 2018

Хорошо, это раздражает, и я не могу понять, в чем дело.

У меня на ноутбуке 2 учетные записи github - для работы и для личных проектов.

Я установил личную электронную почту в качестве глобальной конфигурации, а затем просто назначил рабочую электронную почту в качестве электронной почты git config, когда я работаю над проектом для работы.

Моя проблема в том, что по какой-то странной причине git теперь использует мою рабочую электронную почту для одного из личных проектов, когда я нажимаю, но когда я проверяю, запустив следующий код в корневом каталоге личного проекта:

git config user.email

электронная почта, напечатанная мной, является моим личным проектом!

Код ошибки при попытке сделать push:

remote: Permission to personal_github_username/personal_project.git denied to work_github_username
fatal: unable to access 'https://github.com/personal_github_username/personal_project.git/': The requested URL returned error: 403

вот еще одна странная вещь: я могу использовать Windows-клиент Github, но не могу использовать графический интерфейс Git.

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

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Интересно. Хорошо, давайте попробуем повторить настройки. Чтобы установить информацию о пользователях по умолчанию для всех мерзавцев, выполните следующие действия.

$ git config --global user.name "John Doe"
$ git config --global user.email john.doe@gmail.com

Теперь перейдите к вашему рабочему git и переопределите глобальные настройки, используя тег --local, чтобы вместо этого конкретного проекта он использовал вашу рабочую информацию (Примечание: для каждого рабочего git вы должны сделать это):

$ git config --local user.name "John Doe"
$ git config --local user.email john.doe@work.com

Надеюсь, это поможет!

0 голосов
/ 29 августа 2018

TL; DR

Вам необходимо изменить учетные данные . Начните с ответа VonC здесь .

Что происходит

Обратите особое внимание на URL здесь:

... невозможно получить доступ к https://github.com/... 1015 *

Начните с этого: git push не использует ваш настроенный user.email! Он использует предоставленный вами URL-адрес, обычно через удаленное имя, например origin: есть параметр remote.origin.url, содержащий URL-адрес.

Сам URL начинается с одного из различных имен «схем», например ssh:// или https://. После двойной косой черты имя хоста - технически это может включать user:password@host.dom.ain, но не делайте этого; самое большее, введите user@host.dom.ain - а затем остальная часть строки будет предоставлена ​​от до этого хоста. Или вы можете использовать git@github.com:path/to/repo, что сокращенно от ssh://git@github.com/path/to/repo.

Поскольку вы специально запросили https, Git получит имя пользователя и пароль от помощника по учетным данным . Конкретный помощник по учетным данным, который использует Git, зависит от многих вещей. Наиболее важными по порядку являются эти два:

  • Какая у вас ОС? В Windows есть специальные помощники для учетных данных Windows, в OS X есть помощники на основе osx-цепочки для ключей, а в других есть помощники store и cache.

  • Какую версию Git вы используете? Почти все современные версии намного лучше, чем древние, но все еще существуют некоторые древние (1.7 и более ранние 1.8) версии Git.

Подробнее о помощниках по учетным данным при использовании HTTPS см. Есть ли способ пропустить ввод пароля при использовании https: // на GitHub? Замечу, что вы добавили :

вот еще одна странная вещь: я могу использовать Windows-клиент Github, но не могу использовать графический интерфейс Git.

Это означает, что вы используете Windows (чего я избегаю ...). Очевидно, что их клиент Github для Windows использует помощник по учетным данным, отличный от графического интерфейса Git.

Я предпочитаю использовать SSH, что означает, что я настроил свои ssh-ключи и настроил свой URL на использование ssh://git@github.com/.... При использовании SSH GitHub завершает поиск открытого ключа 1065 *, который ваш SSH-клиент - другими словами, ваш Git, отправляет для поиска , который подключается , а затем использует его, чтобы решить, кто вы и можете ли вы получить доступ к этому хранилищу.

Так где ваш user.email привыкнет?

Как только ваш Git авторизуется и успешно общается с другим Git на GitHub, ваш Git затем нажимает commits . Сами коммиты, которые вы уже сделали, в какой-то момент задолго до того, как вы запустили git push, содержат строки, полученные из ваших настроек user.name и user.email.

Это git commit, а не git push, который использует настройки user.name и user.email. Это просто настройки конфигурации, а не учетные данные.

Другими словами, к тому времени, когда вы запустите git push, это будет уже намного позже того времени, когда Git просматривал ваши настройки user.email. То, что вы установили сейчас, больше не имеет значения. То, что вы установили в прошлом, имеет значение тогда и только тогда, когда вы нажимаете некоторые коммиты, которые использовали его настройку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...