Git отправляет в удаленный репозиторий GitHub как неправильный пользователь - PullRequest
74 голосов
/ 12 января 2011

У меня есть рабочая учетная запись GitHub и личная.Сначала я использовал личный для тестовых проектов, затем я перешел и сделал репозиторий с другой учетной записью на том же компьютере.

Теперь я хотел снова создать новый репозиторий в своей личной учетной записи, я изменилглобальный и локальный user.name и новая пара ключей ssh, введенные на странице настройки GitHub.Затем я установил каталог

git init
git remote add origin <url>
git push origin

, но теперь это говорит мне

ОШИБКА: В разрешении personaluser / newrepo.git отказано в

Iпонятия не имею, как другой аккаунт связан с этим..git/config не показывает workusername связанных вещей.

Если вы используете Windows 10, найдите время, чтобы прочитать ответ Раджана.

Ответы [ 15 ]

64 голосов
/ 15 сентября 2012

это звучит очень похоже на мою текущую работу. кажется, что вы уже настроили свой отдельный ssh-keys, поэтому вам также нужно создать файл ~/.ssh/config и заполнить его информацией, подобной этой:

Host work.github.com
    HostName github.com
    User WORK_GITHUB_USERNAME
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_work_rsa
    IdentitiesOnly yes

Host personal.github.com
    HostName github.com
    User PERSONAL_GITHUB_USERNAME 
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_personal_rsa
    IdentitiesOnly yes

Каждое свойство звучит довольно самоочевидно, кроме IdentitiesOnly. Я не буду пытаться объяснить, для чего это нужно, но это в моей текущей настройке и отлично работает.

Стоит также отметить, что Host URL является просто указателем для получения правильных пользовательских настроек и не оказывает никакого влияния на правильное получение файлов для вашей цели HostName url.

Теперь вам просто нужно убедиться, что ваш origin (или любой remote в целом) URL соответствует правильному Host URL в ваших соответствующих репозиториях в зависимости от вашего имени пользователя. Если у вас уже есть личные репозитории, вы можете отредактировать файл .git/config репо в своем текстовом редакторе:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git

или через командную строку:

git remote set-url origin git@personal.github.com:PERSONAL_GITHUB_USERNAME/project.git

Аналогично вашей работе один:

[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = git@work.github.com:your_work_organization/project.git

или снова через командную строку:

git remote set-url origin git@work.github.com:your_work_organization/project.git

Конечно, вы всегда можете установить один из Host URL-адресов в файле ~/.ssh/config как просто

Host github.com

Я только использовал work.github.com, чтобы легче увидеть отношения конфигурации.

После того, как они все настроены, вы сможете нажать на каждый соответствующий пульт.

EDIT

Одна вещь, которую я только что узнал, это то, что если вы когда-нибудь установите глобальные значения конфигурации git для своего значения user.email (и я предполагаю, что user.name также отправит другое значение), git покажет ваши коммиты в качестве этого пользователя электронной почты. Чтобы обойти это, вы можете переопределить глобальные настройки git config в вашем локальном репозитории:

$ git config user.name "John Doe"
$ git config user.email johndoe@example.com

Теперь он должен отправлять коммиты как правильный пользователь для этого репо.

38 голосов
/ 01 февраля 2017

Перейдите в Панель управления> Учетные записи пользователей> Диспетчер учетных данных> Общие учетные данные

удалите учетные данные git.Затем запустите git push.Это побудит запросить учетные данные git.Введите ваши правильные учетные данные.

35 голосов
/ 12 июля 2011

Вы также можете просто переключиться на https, а не на ssh.Если вы используете https, он будет учитывать настройки .git / config.Поэтому в .git / config измените:

url = git@github.com:USER/PROJECT.git

на

url = https://USER@github.com/USER/PROJECT.git

(эти значения находятся на странице проекта gitнажмите на кнопки SSH и HTTP, чтобы получить новые значения);

33 голосов
/ 12 января 2011

github идентифицирует вас по ssh-ключу, который он видит, а не по каким-либо настройкам из git.

Поэтому вам нужно убедиться, что ssh-ключ вашей рабочей учетной записи не находится в вашем брелоке, когда вы пытаетесь нажать какличный кабинет и наоборот.Используйте ssh-add -l, чтобы определить, какие ключи находятся в вашем наборе ключей, и ssh-add -d keyfile, чтобы удалить ключ из вашего набора ключей.

Кроме того, вам может потребоваться проверить ~/.ssh/config, если вы настроили его для представления определенного sshключи от github.Наконец, я не знаю, как github работает с двумя учетными записями, имеющими один и тот же открытый ключ ssh, поэтому убедитесь, что вы этого не делаете.

12 голосов
/ 29 июня 2014

Недавно у меня возникла та же проблема, потому что я создал новую учетную запись на github. Я попробовал ответы выше, но это не помогло. Затем я увидел сообщение об удалении github из Keychain Access (только если вы используете mac ). Когда я нажимаю push, он спрашивает имя пользователя и пароль, и это работает!

10 голосов
/ 22 сентября 2011

У меня была такая же проблема.Оказывается, у меня было две учетные записи на GitHub, использующие один и тот же ключ SSH, и GitHub по умолчанию использовал неверную учетную запись, у которой не было разрешения на репо, к которому я обращался.Я удалил ключ SSH из учетной записи, которую я не использовал, все работало, как ожидалось.

Вы можете проверить, с какой учетной записью GitHub аутентифицирует себя:

ssh -T git@github.com

Для меня это изначально показывало неправильное имя пользователя, но после удаления дубликата ключа SSH из этой учетной записи оно показывалоправильное имя пользователя и мой тянущий и подталкивающий к моему репо сработал хорошо.

6 голосов
/ 15 февраля 2011

Это способ сделать это: вы можете использовать разные конфигурации ssh для разных учетных записей ssh.

Обновлено 22 февраля:

Проверьте эту ссылку: https://gist.github.com/2351996

4 голосов
/ 03 мая 2018

Я знаю, что это может быть немного поздно, но я застрял с этим довольно долго и наконец исправил это так:

example screenshot

  • Войдите в брелок для доступа (osX)

  • search git (убедитесь, что вы выбрали все элементы)

  • Здесь вы найдете учетные данные преступника.Удалите их.

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

3 голосов
/ 19 марта 2012

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

Перейдите на Github> Настройки учетной записи> Электронные письма и проверьте адрес электронной почты, который вы используете для фиксации совпадений.адрес электронной почты в учетной записи.

Чтобы узнать, какой адрес электронной почты вы используете для фиксации, выполните следующую команду: git config --global user.email.Если вам нужно изменить адрес электронной почты, который вы используете для фиксации, запустите git config --global user.email "your_email@youremail.com".

2 голосов
/ 20 ноября 2015

У меня такая же проблема. Вот что происходит в моем случае:

Ранее я делал git, чтобы не спрашивать свои учетные данные каждый раз, когда я разговариваю с удаленным репозиторием, так: git config --global credential.helper wincred

Я решил проблему, выполнив ту же команду с «none» вместо «wincred» git config --global credential.helper none

Затем git спроси мое имя пользователя / пароль еще раз, и все будет хорошо

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