首页 > 解决方案 > 无法为命令行 Git 切换 GitLab 帐户

问题描述

这可能被标记为重复,我已经尝试了搜索中弹出的类似问题中的所有修复,但没有一个有效。

基本上,我是使用公司的 GitLab 账户进行推送,但由于某些原因决定切换到我的个人账户。除了我找不到办法做到这一点。

~/.git-credentials文件不存在,当我尝试打开它时 nano 只是给了我一个新文件。该~/.git-config文件已经包含我个人帐户的电子邮件和用户名(但没有密码),并且我在 GitLab 存储库页面上的提交归因于我的个人帐户。然而,Git 从来没有要求输入密码(所以我怀疑它实际上已经登录了)。此外,贡献没有显示在我的个人概览页面(彩色小日历)上,而是显示在上一个帐户的概览页面上。

我也尝试了这两个(分别):

git config --global --unset credential.helper

git credential-cache exit

没有任何变化。仍然让我在不要求凭据的情况下推送,并且提交仍然显示在错误帐户的概览中。

我还检查了 git-credential-store文档(正如在类似问题中所建议的那样),无论它值多少钱,$XDG_CONFIG_HOME都是空的,$HOME/.config/git/也不存在。

其他人建议去 GitLab 网站上的 Access Tokens 并删除那里的相应令牌,但它显示“此用户没有活动的访问令牌”。

我什至尝试过卸载并重新安装 Git,但它完全没有改变。

我无计可施。知道这些该死的凭据可能存储在哪里,或者强制注销的方法吗?

编辑:一位同事为我部分修复了它。我的两个帐户都通过 SSH 进行了身份验证,而 GitLab 只使用我首先连接的一个,即公司帐户。

我删除了两个 SSH 密钥,生成了一个新密钥,这次只验证了我的个人帐户。它现在正在工作。我想要一种可以在帐户之间切换的方式(我必须同时使用两者),而不必每次都通过 SSH 重新进行身份验证,如果有人仍然有想法,我愿意接受。

标签: linuxgitubuntugitlab

解决方案


存储库是通过 SSH 克隆的。这很奇怪,因为即便如此,我第一次推送时,它还是要求我输入用户名和密码。只有那一次,然后再也没有。

不过,这看起来像 HTTPS URL。git remote -v使用存储库内部的内容进行检查。
您将操纵的任何凭据帮助程序设置只会影响 HTTPS URL。

它是 SSH,那么您需要更改这些 URL 以使用 ~/.ssh/config 条目

Host <HostEntry>
   Hostname xxxx.xx.xx
   User ubuntu
   IdentityFile ~/.ssh/my_second_key.pem

新 URL 为:

ssh <HostEntry>

推荐阅读