如何更改 Git Bash 上的用户?

How can I change the user on Git Bash?

我想注销一个实际用户,以便我可以用另一个用户登录。

我在Gitbash中看到的是:

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

检查什么 git remote -v returns:用于推送到 http url 的帐户通常嵌入到远程 url 本身。

https://Fre123@github.com/...

如果是这种情况,请输入一个 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 with or without a credential helper


OP Fre1234 adds :

I finally found the solution.
Go to: Control Panel -> User Accounts -> Manage your credentials -> Windows Credentials

Under Generic Credentials there are some credentials related to Github,
Click on them and click "Remove".

那是因为默认安装为Git for Windows set a Git-Credential-Manager-for-Windows
查看 git config --global credential.helper 输出(应该是 manager

对于 Mac 用户

我正在使用 Mac,我在尝试从 Android Studio 推送项目时遇到了同样的问题。其他用户之前登录 Github 并且他的凭据保存在 Keychain Access 中的原因。

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

希望对 Mac 用户有所帮助。

对于 Mac 用户

我正在使用 Mac,我在尝试从 Android Studio 推送项目时遇到了同样的问题。原因是另一个用户之前登录过 GitHub 并且他的凭据保存在钥匙串访问中。

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

对于任何 OS

这对我很有帮助,所以我把它放在这里,以防万一。 完成为两个帐户添加 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 文件。接下来,您可以在存储库根目录上打开 terminal/git bash 并检查您将从哪个帐户推送

git config user.email

假设这 return 是第一位用户的电子邮件,而您想从第二位用户那里推送。更改本地 user.nameuser.email :

git config user.name "SECOND_USER"
git config user.email "SECOND_USER@example.com"

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


如果上述步骤仍对您不起作用,请检查您是否已在 GitHub 门户中上传 RSA 密钥。 Refer to GitHub documentation:

然后,清除您的 ssh 缓存密钥 Reference

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.

然后,将正确的遥控器分配给您的本地存储库。确保你在 Host 旁边输入与你在 .ssh/config 文件中提供的用户名相同的用户名。在下面的例子中 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

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

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

注意:无需从 Keychain 中删除用户。

WINDOWS

看起来这里已经有很多解决方案,但我想我还是会分享我的,这是 Vonc:

的一个转折

The OP Fre1234 adds in the comments:

I finally found the solution. Go to: Control Panel -> User Accounts -> Manage your credentials -> Windows Credentials

Under Generic Credentials there are some credentials related to Github, Click on them and click "Remove".

我没有删除第一个帐户的凭据,而是在 GitHub 上为第二个帐户创建了一个新的 PAT,然后单击 Add a generic credential

然后这样填写:

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

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

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

我个人不打算更改 user.name,从我的小实验看来 GitHub 无论如何都使用电子邮件来获取用户名和头像,并且仅在电子邮件无效时才使用名称.