朋友和我在一起分享我的电脑。我已经在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
答案 0 :(得分:113)
这对我有用,它会提示输入用户名和密码
git config --local credential.helper ""
git push origin master
答案 1 :(得分:64)
如果您使用不同的Windows用户,您的SSH密钥和git设置将是独立的。
如果这不是您的选择,那么您的朋友应该将您的SSH密钥添加到她的Github帐户。
虽然,以前的解决方案会让你自己推动,但它会让你进入她的回购。如果你不想要这个并在同一台电脑上的不同文件夹中工作,你可以通过删除config命令的-g
标志在git文件夹内本地设置用户名和电子邮件:
git config user.name her_username
git config user.email her_email
或者,如果你推翻https
协议,Github每次都会提示输入用户名/密码(除非你使用密码管理器)。
答案 2 :(得分:20)
您可以使用其他帐户进行推送。 例如,如果您的帐户 A 存储在.gitconfig中,并且您想要使用帐户 B ,则该帐户是您要推送的回购的所有者。
帐户 B :B_user_name,B_password
SSH链接示例:https://github.com/B_user_name/project.git
B 帐户的推送是:
$ git push https://'B_user_name':'B_password'@github.com/B_user_name/project.git
要查看.gitconfig中的帐户
$git config --global --list
$git config --global -e
(也改变帐户)答案 3 :(得分:18)
我使用自定义IdentityFile
设置了ssh别名,并重写了原点以使用我的自定义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
答案 4 :(得分:13)
如果在运行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 push
并使用以下内容推送new_user
。
$ 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:
答案 5 :(得分:12)
如果您使用SSH URL(git@github.com:username/projectname.git
)而不是HTTPS URL,则可以使用$GIT_SSH_COMMAND
环境变量临时指定其他SSH密钥:
$ GIT_SSH_COMMAND="ssh -i different_private_key" git push
据我所知,使用SSH URL,GitHub并不关心用户名,只关心密钥:如果用户帐户有权访问存储库,并且该帐户有SSH密钥(请参阅{ {3}}在帐户设置中),如果您使用该SSH密钥推送到该存储库,推送将被视为来自该用户。
答案 6 :(得分:12)
请遵循以下步骤:
# you can check what's currently:
git config user.name
git config user.email
git config user.name "your_github_username"
git config user.email "your_github_email"
# Again check what's currently:
git config user.name
git config user.email
git log
# once you're confirmed that it's tagged to you, then you should move to step 3
万一作者错了,那么您可以轻松undo last commit without losing changes
此外,在进入步骤3之前,请不要忘记按照步骤1进行健全性检查!!
git config --local credential.helper ""
git push
# it will ask you to enter your github_username and github_password
答案 7 :(得分:7)
克隆时很简单,请使用您的用户名获取git URL。提交时会询问您的新用户密码。
例如:
git clone https://username@github.com/username/reponame.git
git clone https://username@bitbucket.org/username/reponame.git
答案 8 :(得分:6)
如果这是你的问题
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中删除授权信息。这个解决方案花了我几个小时来弄明白。我发现我的钥匙串也有证书。
打开Keychain访问权限,单击All Items并搜索git。删除所有钥匙串
答案 9 :(得分:5)
转到Credential Manager 转到Windows凭据 删除Generic Credentials下的条目 尝试重新连接。
答案 10 :(得分:3)
如前所述,您可以使用
git config user.name her_username
git config user.email her_email
为单个仓库手动设置用户名和电子邮件,但您必须添加以下命令:
git commit --amend --reset-author
如果您在更改之前已尝试过推送。否则,更改不会出现在配置文件中。
答案 11 :(得分:3)
git add .
git commit -m "initial commit"
git config --local credential.helper ""
git push https://github.com/youraccount/repo.git --all
执行此推送命令后,将打开用户名密码提示。
答案 12 :(得分:3)
我无法弄清楚如何在一台机器上拥有第二个github身份(这些答案都不适用于我),但是我确实想出了如何以自己的身份推送到多个不同的github帐户的方法。
为您的第二个github帐户设置第二个SSH密钥(like so)
因此在帐户之间进行更改:
使用我的新第二个github帐户
ssh-add -D
ssh-add ~/.ssh/ssh_key_for_my_2nd_account
git push
使用我的主要帐户
ssh-add -D
ssh-add ~/.ssh/id_rsa
git push
答案 13 :(得分:1)
如果在Windows和用户Git for Windows下,manager
用于管理凭据(又名Git-Credential-Manager-for-Windows
Link),问题是在推送时没有简单的方法在用户之间切换使用https
令牌将OAuth
改为GitHub。
原因是令牌存储为:
git:https://github.com
Personal Access Token
OAuth_Token
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
Etvoilá!正确的凭据将从Windows凭据存储中提取。
当然,这并不会改变推送哪个用户/电子邮件。为此,您必须配置通常的user.name
和user.email
答案 14 :(得分:1)
我一直在使用一台机器将代码推送到具有不同用户名的两个不同的GitHub帐户。假设您已经设置了一个帐户并想添加一个新帐户:
ssh-keygen -t rsa -C "myaddress@example.com"
id_rsa
。给它起一个不同的名字,例如id_rsa_another
设置-> SSH和GPG密钥->新的SSH密钥-> 提供标签并粘贴 密钥->添加SSH密钥
ssh-add ~/.ssh/id_rsa_another
touch ~/.ssh/config
创建一个配置文件,并通过为您的帐户提供配置来编辑该文件:#first account
Host github.com-first
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
#another account
Host github.com-another
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_another
现在,您应该能够根据添加到ssh代理的密钥从不同的帐户进行推送,即使用第一个帐户,
ssh-add ~/.ssh/id_rsa
。
您可能还想更改用户电子邮件:
git config --global user.email "myaddress@example.com"
或在将代码插入其中一个帐户时清除ssh密钥,以防权限错误:
ssh-add -D
答案 15 :(得分:1)
您可以使用git remote add origin-username https://username@github.expedia.biz/repository_name.git
此后,如果您使用git push -u origin-username master
进行推送,则会提示您输入密码。
答案 16 :(得分:1)
git config user.name只更改我提交的名称。我仍然无法推动。这就是我解决它的方式,我觉得这对我来说很简单。
在要使用的计算机上按下的用户名下生成SSH密钥 https://help.github.com/articles/connecting-to-github-with-ssh/
将此密钥添加到要推送到的github用户帐户 https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/
选择使用SSH克隆
您现在可以将此用户推送到该回购。
答案 17 :(得分:1)
如果你有https://desktop.github.com/
然后你可以去Preferences (or Options) - >账户
然后退出并登录。
答案 18 :(得分:0)
进行提交的用户ID存储在配置文件中。
转到存储库顶部 vi .git / config
更改“ [remote“ origin”]之后列出的网址行以具有适当的用户ID
答案 19 :(得分:0)
如果您使用ssh并获得
拒绝some_username / repository.git的权限 Alice_username
当您不想以Alice_username的身份推送时,请确保Alice_username没有将计算机的ssh密钥添加到其github帐户中。
我从爱丽丝的github帐户中删除了ssh密钥,并且推送成功了。
答案 20 :(得分:0)
这应该工作:
git push origin local-name:remote-name
更好,对于GitLab,我使用第二个“ origin
” ,说“ origin2
”:
git remote add origin2 ...
然后
git push origin2 master
常规的(简短的)git push
应该像第一个“ origin
”一样隐式工作
答案 21 :(得分:0)
我刚刚添加了其他用户:
它对我有用。
答案 22 :(得分:0)
我遇到了类似的问题。我有一个用于工作的 github 帐户和一个私人帐户。在我的 Mac 上,我主要使用我的工作 github。我无法说服 git 通过终端推送到我的私人仓库。但是当我使用github桌面时它起作用了。
(我知道一定有不同的方法,但以上答案都没有帮助,所以这是阻力最小的方法。)