Как мне нажать на GitHub под другим именем пользователя?


мы с другом делимся моим компьютером. Я сделал толчки в GitHub, используя оболочку Git bash в Windows 7. Теперь мы в другом проекте на этом компьютере, и мне нужно, чтобы она нажала на свой аккаунт. Но он продолжает пытаться использовать мое имя пользователя и говорит, что у меня нет доступа к ее репозиторию:

$ git push her_github_repository our_branch
ERROR: Permission to her_username/repository.git denied to my_username.
fatal: The remote end hung up unexpectedly
13 54

13 ответов:

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

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

хотя, предыдущее решение будет держать вас толкать как себя, но это позволит вам толкать в ее РЕПО. Если вы не хотите этого и работаете в разных папках на одном ПК, вы можете настроить имя пользователя и электронную почту локально внутри папки с git, удалив -g флаг команды config:

git config user.name her_username
git config user.email her_email

альтернативно, если вы нажмете на https протокол, GitHub будет запрашивать имя пользователя/пароль каждый раз (если вы не используете менеджер паролей).

это работает для меня, он будет запрашивать имя пользователя и пароль

git config --local credential.helper ""
git push origin master

Я устанавливаю псевдоним ssh, используя пользовательский IdentityFile и переписал происхождение, чтобы использовать мой пользовательский me-github хоста.

#when prompted enter `id_rsa_user1` as filename
ssh-keygen -t rsa

# ~/.ssh/config
Host user1-github
HostName github.com
Port 22
User git
IdentityFile ~/.ssh/id_rsa_user1

#check original remote origin url
git remote -v
origin git@github.com:user1/my-repo.git

#change it to use your custom `user1-github` hostname
git remote rm origin
git remote add origin git@user1-github:user1/my-repo.git

если после запуска git push Git запрашивает пароль user, но вы хотели бы нажать как new_user, вы можете использовать git config remote.origin.url:

$ git push
user@my.host.com:either/branch/or/path's password:
^C
$ git config remote.origin.url
user@my.host.com:either/branch/or/path

$ git config remote.origin.url new_user@my.host.com:either/branch/or/path

$ git push
new_user@my.host.com:either/branch/or/path's password:

Если вы используете SSH URL (git@github.com:username/projectname.git) вместо HTTPS URL, вы можете временно указать другой ключ SSH с помощью $GIT_SSH_COMMAND переменные среды:

$ GIT_SSH_COMMAND="ssh -i different_private_key" git push

насколько я могу судить, с URL-адресами SSH GitHub не заботится об именах пользователей, только о ключах: если учетная запись пользователя имеет доступ к репозиторию, и эта учетная запись имеет ключ SSH (см. SSH ключи страница в настройках учетной записи), то если вы используете этот ключ SSH для нажатия на этот репозиторий, толчок будет рассматривается как исходящий от этого пользователя.

вы можете нажать с помощью другой учетной записи. Например, если ваш аккаунт A, который хранится в .gitconfig и вы хотите использовать учетную запись B который является владельцем РЕПО, которое вы хотите нажать.

счета B: B_user_name, B_password
Пример ссылки SSH:https://github.com/B_user_name/project.git

пуш с B

Это просто при клонировании, пожалуйста, возьмите git URL с вашим именем пользователя.При фиксации он будет запрашивать ваш новый пароль пользователя.

например:

git clone https://username@github.com/username/reponame.git

git clone https://username@bitbucket.org/username/reponame.git

перейти к менеджеру учетных данных Перейти к учетным данным Windows Удалите записи в разделе Общие учетные данные Попробуйте подключиться еще раз.

если это ваша проблема

remote: Permission to username1/repo.git denied to username2.
fatal: unable to access 'https://github.com/username1/repo.git/':
The requested URL returned error: 403

в дополнение к изменению имени пользователя и электронной почты из терминала с помощью git config:

$ git config --global user.name "Bob"
$ git config --global user.email "bob@example.com"

вам нужно будет удалить информацию авторизации из Связки ключей. Это решение заняло у меня несколько часов, чтобы выяснить.Я обнаружил, что у меня также был сертификат в моем брелке.

откройте Keychain access, нажмите на все элементы и найдите git. Удалить все связки ключей

Как упоминалось ранее, вы можете использовать

git config user.name her_username
git config user.email her_email

чтобы вручную установить имя пользователя и адрес электронной почты для одного РЕПО, Но вы должны добавить эту команду:

git commit --amend --reset-author

Если вы уже пытались продавить до изменения. В противном случае изменения не отображаются в файле конфигурации.

git config user.name только изменяет имя, которое я совершаю. Я все еще не могу надавить. Вот как я решил это, и я думаю, что это простой способ для меня.

  1. создайте ключ SSH под именем пользователя, которое вы хотите нажать на компьютере, который вы будете использовать https://help.github.com/articles/connecting-to-github-with-ssh/

  2. добавьте этот ключ в учетную запись пользователя github, которую вы хотите нажать к https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

  3. выберите клонирование с помощью SSH

вы можете нажать на этого пользователя к этому РЕПО сейчас.

Если у вас есть https://desktop.github.com/
тогда вы можете перейти к настройки (или Параметры) -> учетные записи
а потом выйти и войти в систему.

если под Windows и пользователь Git для Windows и manager для управления учетными данными (aka Git-Credential-Manager-for-Windowsссылке) проблема в том, что нет простого способа переключения между пользователями при нажатии на GitHub over https используя OAuth жетоны.

причина в том, что токен хранится как:

  • Адрес В Интернете: git:https://github.com
  • имя пользователя: Personal Access Token
  • пароль: OAuth_Token

вариации URL в Internet Address не работает, например:

  • git:https://username@github.com
  • git:https://github.com/username
  • ...

решение: пространства имен. Это находится в деталях для конфигурации Git-Credential-Manager-for-Windows:

цитата из него:

пространство имен

задает пространство имен для сохраненных учетных данных.

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

git config --global credential.namespace name

теперь сохраните свои учетные данные в Диспетчере учетных данных Windows как:

  • Адрес В Интернете: git.username:https://github.com
  • имя пользователя: Personal Access Token
  • пароль: OAuth_Token

обратите внимание, что мы изменили: git ->git.username (где вы изменяете username к вашему фактическому имени пользователя или ради него, к тому, что вы можете захотеть в качестве уникального идентификатора)

теперь, внутри репозитория, где вы хотите использовать конкретную запись, выполните:

git config credential.namespace git.username

(опять-таки ... заменить username с желаемым значением)

код .git/config теперь будет содержат:

[credential]
    namespace = git.username

Et voilá! Правильные учетные данные будут извлечены из хранилища учетных данных Windows.

это, конечно, не меняет, какой пользователь/электронная почта нажимает. Для этого вы должны настроить обычный user.name и user.email