如何在Git Bash中更改用户?

49

输入图像描述

我想注销当前用户,以便我可以使用另一个用户登录。

在 Git bash 中,我看到的是:

MINGW64 ~/Documents/NetBeansProjects/ConstructorJava (master)
git push -u origin/master
remote: Permission to Fre1234/ConstructorJava.git denied to Fre123.  
Fatal: unable to access https://github.com/Fre1234/ConstructorJava.git/": The requested URL returned error: 403
6个回答

85

检查一下git remote -v返回的内容:推送到http url 的账户通常嵌入在远程url本身中。

https://Fre123@github.com/...
如果是这种情况,请放置一个URL,该URL将强制Git在推送时询问要使用的帐户:

如果是这种情况,请放置一个URL,该URL将强制Git在推送时询问要使用的帐户:

git remote set-url origin https://github.com/<user>/<repo>

或者使用Fre1234账户:

git remote set-url origin https://Fre1234@github.com/<user>/<repo>

还要检查一下你安装的Git For Windows是否已经安装了凭证助手,如此问题中所述。


OP Fre1234评论中补充道:

我终于找到解决方案了。
前往:控制面板 -> 用户帐户 -> 管理凭据 ->Windows 凭据

通用凭据下有一些与Github相关的凭据,
点击它们并点击“删除”。

那是因为Git for Windows的默认安装设置了Git-Credential-Manager-for-Windows
请看git config --global credential.helper 输出(应该是manager)。


24
谢谢你,因为这个,我终于找到了解决方案。请前往:控制面板-> 用户帐户-> 管理您的凭据-> Windows 凭据-> 在通用凭据下,有一些与 Github 相关的凭据,请单击它们并单击“删除”。 - Fre1234
2
@Fre1234 很好!我已经将您的评论包含在答案中以增加可见性。 - VonC
HI vonC,感谢您的评论。对我也起作用了。非常感谢! - Arpan Saini
好的,凭证管理器是解决方案;原始答案在我的用户名是电子邮件地址时将无法工作,因为 URL 中会有两个 @。但是,如果我们可以在凭证管理器中更改,使其包含不同的 usernamepassword,那该怎么办呢?现在用户名是 PersonalToken - WesternGun
@WesternGun 关于 @ 符号,这个链接 https://dev59.com/vW025IYBdhLWcg3wKSmP#6172831 有帮助吗? - VonC

13

适用于任何操作系统

这个方法对我有帮助,所以我把它放在这里,以备不时之需。 一旦你完成了为两个账户添加 RSA 密钥,请为这两个账户在你的 .ssh 目录下添加一个配置文件 (.ssh/config)。

# First account
Host github.com-<FIRST_ACCOUNT_USERNAME_HERE>
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_user1
   
# Second account
Host github.com-<SECOND_ACCOUNT_USERNAME_HERE>   
   HostName github.com
   User git
   IdentityFile ~/.ssh/id_rsa_user2

请确保使用正确的用户名和RSA文件。接下来,您可以在仓库根目录上打开终端 / git bash,并检查您将从哪个帐户推送

git config user.email

假设这个函数返回第一个用户的邮箱,而你想从第二个用户开始推送。修改本地的user.nameuser.email:
git config user.name "SECOND_USER"
git config user.email "SECOND_USER@example.com"

(这不会改变全局配置,您可以将第一个用户设置为全局用户)。完成后,您可以使用git config user.email进行确认,它应返回第二个用户的电子邮件。您已准备好使用第二个用户推送到GitHub。其余部分都是相同的git addgit commitgit push。 要从第一个用户推送,请再次更改本地user.name并按照相同步骤操作。 希望能对您有所帮助:)


如果上述步骤仍无法解决问题,请检查您是否已在GitHub门户网站上传了RSA密钥。请参考GitHub文档
然后,清除您的ssh缓存密钥参考资料
ssh-add -D

然后添加您的2个ssh密钥

ssh-add ~/.ssh/id_rsa_user1
ssh-add ~/.ssh/id_rsa_user2

然后在你的终端中输入:

ssh -T git@github.com-<SECOND_ACCOUNT_USERNAME_HERE>

你应该看到以下输出:

Hi <SECOND_USERNAME>! You've successfully authenticated, but GitHub does not provide shell access.

然后,将正确的远程库分配给本地仓库。确保在.ssh/config文件中给出的Host旁边放置与您提供的用户名相同的用户名。在以下情况下:git@github.com-<SECOND_ACCOUNT_USERNAME_HERE>

git remote rm origin
git remote add origin git@github.com-<SECOND_ACCOUNT_USERNAME_HERE>:/your_username/your_repository.git

这是一个非常聪明的解决方案。谢谢! - user27221

6

针对Mac用户

我使用的是Mac电脑,当我试图从Android Studio推送项目时也遇到了同样的问题。原因是其他用户之前登录了Github并将他的凭据保存在钥匙串中。

你需要从钥匙串中删除这些凭据,然后再尝试推送。

希望对Mac用户有所帮助。


4

针对Mac用户

我使用的是Mac电脑,当我试图从Android Studio推送项目时,也遇到了同样的问题。这是因为另一个用户之前登录过GitHub,其凭据已保存在钥匙串访问中。

解决方法是删除该进程存储在钥匙串中的所有信息。

输入图像描述


3

如果你想在git Bash中更改用户,你只需要在git bash中配置特定的用户和电子邮件(全局)。

$ git config --global user.name "abhi"
$ git config --global user.email "abhi@xyz.com"

注意:不需要从钥匙串中删除用户。

2

WINDOWS

看起来这里已经有很多解决方案了,但我还是想分享我的方法,这是基于 Vonc 的方法的改进:

楼主 Fre1234 在评论中增加了:

我终于找到了解决方案。转到:控制面板 -> 用户账户 -> 管理您的凭据 -> Windows 凭据

在通用凭据下,有一些与 Github 相关的凭据,请单击它们并单击“删除”。

我没有删除第一个帐户的凭据,而是在 GitHub 上为第二个帐户创建了一个新的 PAT,并单击了 添加通用凭据

Generic credential button

然后按照以下方式填写:

GitHub account details

我不知道需要什么权限,所以我只使用了这些:

PAT Permissions

现在我可以自由克隆和推送,但请确保将您的电子邮件更改为第二个帐户所使用的电子邮件。否则,看起来您的提交是使用第一个帐户进行的。

$ git config --global user.email "SECONDACCOUNT@EMAIL.COM"

就我个人而言,我不会去更改user.name。从我的一些小实验来看,GitHub似乎会使用电子邮件获取用户名和头像,只有在电子邮件无效时才使用名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接