我和一个朋友共用我的电脑。我已经在Windows 7上使用git bash shell推送到GitHub。现在我们在那台电脑上做一个不同的项目,我需要她推到她的账户上。但它一直试图使用我的用户名,并说我没有访问她的存储库:

$ 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

重要:2021年8月13日删除了对密码验证的支持。


当前回答

git add .
git commit -m "initial commit"
git config --local credential.helper ""
git push https://github.com/youraccount/repo.git --all

执行此push命令后,将打开用户名密码提示符。

其他回答

这是简单的克隆,请采取的git URL与您的用户名。在提交时,它将询问您的新用户密码。

Eg:

Git克隆https://username@github.com/username/reponame.git

Git克隆https://username@bitbucket.org/username/reponame.git

如果这是你的问题

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配置从终端更改用户名和电子邮件:

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

您需要从钥匙串中删除授权信息。我花了好几个小时才想出这个解决办法。我发现我的钥匙链里也有证书。

打开钥匙链访问,点击所有项目,搜索git。删除所有keychain

如果在Windows下,用户Git for Windows和管理凭据的管理器(又名Git- credential - manager -for Windows Link),问题是当使用OAuth令牌通过https推送到GitHub时,没有简单的方法在用户之间切换。

原因是令牌被存储为:

互联网地址:git:https://github.com 用户名:个人访问令牌 密码:OAuth_Token

Internet Address中的URL变量是无效的,例如:

转到:https://username@github.com git:https://github.com/username ...

解决方案:名称空间。这可以在Git-Credential-Manager-for-Windows的配置细节中找到:

https://github.com/Microsoft/Git-Credential-Manager-for-Windows/blob/master/Docs/Configuration.md

引用其中的话:

名称空间 为存储的凭证设置名称空间。 默认情况下,GCM对所有存储的凭证使用'git'命名空间,设置这个配置值可以控制全局或每台主机使用的命名空间。 Git配置——global credentials .namespace名称

现在,在Windows凭据管理器中存储您的凭据为:

互联网地址:git.用户名:https://github.com 用户名:个人访问令牌 密码:OAuth_Token

注意我们已经改变了:git -> git。用户名(将用户名改为实际用户名或任意你想要的唯一标识符)

现在,在你想要使用特定条目的存储库中,执行:

git config credential.namespace git.username

(再次…用你想要的值替换用户名)

你的.git/config现在将包含:

[credential]
    namespace = git.username

果不其然!正确的凭据将从Windows凭据存储中取出。

当然,这不会改变哪个用户/电子邮件正在推送。为此,您必须配置通常的user.name和user.email

如果您使用ssh和get

some_username/repository的权限。Git拒绝 Alice_username

虽然你不想推作为Alice_username,确保Alice_username没有你的电脑的ssh密钥添加到它的github帐户。

我从爱丽丝的github账户上删除了ssh密钥,推送成功了。

很容易修复,您可以在~/.ssh/config处编辑该文件

来自:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/private_key

To:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/other_account_private_key

切换帐户时,两者交替使用。此外,为了避免每次切换时都更改git配置的全局名称和电子邮件,您可以满足于一些通用输入,或者尝试在这里进行局部作用域配置。