无法为命令行 Git 切换 GitLab 帐户
Posted
技术标签:
【中文标题】无法为命令行 Git 切换 GitLab 帐户【英文标题】:Can't switch GitLab accounts for command-line Git 【发布时间】:2020-12-16 22:02:41 【问题描述】:这可能被标记为重复,我已经尝试了搜索中弹出的类似问题中的所有修复,但没有一个有效。
基本上我是用公司的GitLab账号来推送的,但是因为一些原因决定切换到我的个人账号。除非我找不到这样做的方法。
~/.git-credentials
文件不存在,当我尝试打开它时 nano 只是给了我一个新文件。 ~/.git-config
文件已经包含我的个人帐户的电子邮件和用户名(但没有密码),并且我在 GitLab 的存储库页面上的提交归因于我的个人帐户。然而,Git 从来没有要求输入密码(所以我怀疑它实际上已经登录了)。此外,贡献没有显示在我的个人概览页面(彩色小日历)上,而是显示在以前帐户的概览页面上。
我也试过这两个(分别):
git config --global --unset credential.helper
git credential-cache exit
没有任何变化。仍然让我在不要求凭据的情况下推送,并且提交仍然显示在错误帐户的概览中。
我还检查了 git-credential-store documentation(正如在类似问题中所建议的那样),不管它值多少钱,$XDG_CONFIG_HOME
是空的,$HOME/.config/git/
也不存在。
有人建议去 GitLab 网站上的 Access Tokens 并删除那里的相应令牌,但它说“此用户没有有效的访问令牌。”
我什至尝试过卸载并重新安装 Git,但它完全没有改变。
我已经束手无策了。知道这些该死的凭据可能存储在哪里,或者有一种强制注销的方法吗?
编辑:一位同事为我部分修复了它。我的两个帐户都通过 SSH 进行了身份验证,而 GitLab 只使用我首先连接的一个,即公司帐户。
我删除了两个 SSH 密钥,生成了一个新密钥,这一次只验证了我的个人帐户。它现在正在工作。我想要一种可以在帐户之间切换的方法(我必须同时使用这两个帐户),而不必每次都通过 SSH 重新进行身份验证,如果有人仍然有想法,我愿意接受。
【问题讨论】:
您使用的是 HTTPS 还是 SSH?您是否阅读过 [Git FAQ(git-scm.com/docs/gitfaq) 的相关部分? 回购是通过 SSH 克隆的。这很奇怪,因为即便如此,我第一次推送时,它还是要求我输入用户名和密码。只有那一次,以后再也不会了。 您可以编辑您的问题以将git remote -v
显示为代码块吗?
在 Linux 上使用 ssh,您有很多选择。通常,您将运行ssh-agent
并让它存储(和转发)密钥,ssh-add -l
将列出您当前的所有密钥。如果您需要添加一个,ssh-add
会让您将其添加到堆中。但是这里有一个问题:许多 服务器 只听前 N 个键,所以如果你有很多键,你会在到达正确的键之前用错误的键运行允许的数字。据我所知,没有标准的解决方案。
虽然只有两个密钥,但您应该能够同时添加两个密钥,而且一切正常,但至少在一种情况下您将交出一个额外的密钥。
【参考方案1】:
repos 是通过 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
新网址为:
ssh <HostEntry>
【讨论】:
以上是关于无法为命令行 Git 切换 GitLab 帐户的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Intellij Idea 中切换到另一个 git 帐户 [重复]