linux - 无法为命令行 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 重新进行身份验证,如果有人仍然有想法,我愿意接受。
解决方案
存储库是通过 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>
推荐阅读
- excel - 如何使用 XML HTTP 请求在 Visual Basic for Applications 中提取 Web 数据?
- python - mongodb更新查询的无效语法问题
- scip - 启用减少时,SCIP-Jack 给出了不正确的 Steiner Arborescence 解决方案
- unit-testing - 使用 PanicsWithValue 进行 Golang 单元测试
- python - 如何从 csv 文件中计算字符串的最小值?
- python - Kivy:对象运动/更新问题(Kivy Pong 教程改编)
- model-checking - 如何在 Spin 中检查消息队列中的任意条件?
- javascript - Nodejs等待数据库查询
- python - matplotlib 不显示窗口
- javascript - Sequelize 从用户关联中排除密码