【问题标题】:How can I change the user on Git Bash?如何在 Git Bash 上更改用户?
【发布时间】:2017-01-18 06:01:05
【问题描述】:

我想注销一个实际用户,以便与其他用户一起登录。

我在 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

【问题讨论】:

    标签: git-bash


    【解决方案1】:

    查看git remote -v 返回的内容:用于推送到 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 是否带有凭据帮助程序as in this question


    OP Fre1234 加上in the comments

    我终于找到了解决办法。
    转至:Control Panel -&gt; User Accounts -&gt; Manage your credentials -&gt; Windows Credentials

    Generic Credentials下有一些与Github相关的凭据,
    点击它们,然后点击“Remove”。

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

    【讨论】:

    • 谢谢你,我终于找到了解决办法。转到:控制面板->用户帐户->管理您的凭据->Windows凭据->在通用凭据下有一些与Github相关的凭据,单击它们并单击“删除”。
    • @Fre1234 太好了!我已将您的评论包含在答案中以提高知名度。
    • 您好 vonC,感谢您添加评论。它也对我有用。非常感谢人
    • 好吧,凭证管理器就是这样;原始答案将不起作用,如果我的用户名是电子邮件地址,那么我的 URL 中有两个 @。但是,如果我们可以更改凭证管理器,使其包含不同的usernamepassword。现在用户名是PersonalToken
    • @WesternGun 关于@,stackoverflow.com/a/6172831/6309 有帮助吗?
    【解决方案2】:

    适用于任何操作系统

    这对我有帮助,所以我把它放在这里,以防万一。 为两个帐户添加 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 密钥。 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-&lt;SECOND_ACCOUNT_USERNAME_HERE&gt;.

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

    【讨论】:

      【解决方案3】:

      对于 Mac 用户

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

      您需要从 Keychain Access 中删除这些凭据,然后尝试推送。

      希望对 Mac 用户有所帮助。

      【讨论】:

        【解决方案4】:

        对于 Mac 用户

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

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

        【讨论】:

          【解决方案5】:

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

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

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

          【讨论】:

            【解决方案6】:

            WINDOWS

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

            在 cmets 中添加了 OP Fre1234:

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

            在 Generic Credentials 下有一些与 Github,点击它们,然后点击“删除”。

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

            然后这样填写:

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

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

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

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

            【讨论】:

            • 好一个。赞成。您可以在 CMD 中使用printf "host=github.com\nprotocol=https\nusername=xxx\npassword=token"|git credential-manager-core store 注册令牌
            猜你喜欢
            • 2011-12-10
            • 1970-01-01
            • 2014-12-31
            • 2012-02-16
            • 2011-12-02
            • 2021-05-31
            • 1970-01-01
            • 2017-02-08
            相关资源
            最近更新 更多