如何在Windows的Git Bash控制台中退出登录?

34

我正在使用Windows版本为2.9.2.windows.1的Git。

我在一个仓库项目上工作,当我进行推送操作时,它要求我输入我的GitHub用户名和密码。 我输入了我的GitHub用户名和密码来更新该项目。

在下一次推送时,它不再要求输入我的用户名和密码。 所有我对该项目所做的修改都已经更新。

看起来我的用户名和密码已经“保存”了。 如何“取消保存”?

我该如何退出登录?

我尝试过

git config --global --unset user.name
git config --global --unset user.email
git config --global --unset credential.helper

但是他们不会让我注销。

我想要清除我的登录状态,这样下一次推送时,它会再次要求我输入用户名和密码。


2
可能是从git中移除凭据的重复问题。 - dkaz
@dkaz,你提供的链接中没有可行的答案。 - Lord Rixuel
无需编辑问题(您提出问题的位置,而不是解决方案:我已编辑我的答案以反映您发现的内容) - VonC
10个回答

33
对于 Windows 10,如果您的电脑有不同的登录名(MSFT帐户)并且GitHub在另一个帐户上,如果您进入控制面板→用户帐户并搜索凭据管理器,您将看到“Web凭据”和“Windows凭据”。
GitHub似乎正在使用在PC上注册的默认ID(Microsoft帐户)。在Windows凭据下,删除GitHub登录详细信息,然后再试一次Push。您将被要求明确输入GitHub ID和密码。一旦我们登录,Git push的个人访问令牌就会存储在其中。

GitHub凭据


3
目前为止,唯一对我起作用的解决方案是git credential-manager delete <url>,但似乎永远不会返回。 - AnonBird
2
最简单的解决方案。运行得非常好。 - Numanqmr

27

首先,用户认证与user.nameuser.email Git配置没有关系。

其次,与旧答案“从Git中删除凭据”相比,最新的Git for Windows使用了Git Credential Manager (Git 2.9.2 => GCM 1.5.0)。

检查您的配置 (git config -l), 看看是否已注册“manager”(或者更近期的2020+:“manager-core”)。
如果没有,请设置它:

 git config --global credential.helper manager-core

自从2016年4月的v1.3.0版本以来,它就有了一个删除命令来清除凭据

git credential-manager delete <url>

更新 2018 年:"delete" 已弃用,请使用 reject
更新 2020 年:"reject" 已弃用,请使用 erase

git credential-manager erase <url>

实际上,无论您使用哪个'xxx'凭据管理器('xxx'是git config credential.helper的结果),您都可以执行以下操作:

printf "protocol=https\nhost=github.com" | git-credential-xxx erase

# Windows (2020-2021)
printf "protocol=https\nhost=github.com" | git-credential-manager-core erase

# Linux
printf "protocol=https\nhost=github.com" | git-credential-libsecret erase

# MacOs
printf "protocol=https\nhost=github.com" | git-credential-osxkeychain erase

这比玩弄您操作系统的凭据管理器要好。

在您的Git安装中,git-credential-xxx可执行文件在usr/libexec/git-core或(对于Windows)mingw64/libexec/git-core中。
在此提到的那样,在MacOS上,它应该已经在/usr/local/git/bin/中。


如果git config credential-manager返回store,则Git使用“store”模式,将凭据保存到磁盘上的纯文本文件中,并且它们永远不会过期。

type %USERPROFILE%\.git-credentials

我建议从配置中删除该凭据助手,因为它以明文形式存储凭据。


实际上,提问者Lord Rixuel评论中确认了这是一个本地Windows凭据管理器函数,无论是否使用Git,都可以自动提供凭据:

我看到“管理凭据”选项,出于好奇我点了进去,然后点击“Windows凭据”,在“通用凭据”下面有“git:github.com”,我点击它,然后出现“删除”选项。我点击了删除。

当我执行 git push 时,它又要求我输入用户名和密码。这正是我想要注销时的效果。


Git凭证管理器最初是在Git for Windows 2.7.3中引入的:https://github.com/git-for-windows/git/releases/tag/v2.7.3.windows.1(2016年3月) - VonC
1
只是为了确认,<url> 部分是指存储库链接的 URL 链接,对吗?我尝试了该命令,但似乎不起作用。它显示“未知命令 clear,请使用 git-credential-manager ? 显示帮助”。 - Lord Rixuel
@LordRixuel,你使用的是哪个版本的Git凭证管理器?是的,在你的情况下,<url>应该是https://github.com。 - VonC
Git凭据管理器Windows版1.5.0 - Lord Rixuel
当我使用删除重试时,它会显示“无法从标准输入读取”。 - Lord Rixuel
显示剩余38条评论

10

此问题的原因:

1.先前登录账户的凭据已保存在Windows凭据中。

2.由于这个原因,Gitbash会产生错误并且不允许我们使用新的凭据进行登录。

解决方案如下:

控制面板->用户账户->管理您的凭据->Windows凭据->在通用凭据下有一些与Github相关的凭据,请单击它们并单击“删除”。

这将删除任何以前的登录,没有任何问题。 Gitbash控制台提供了一个全新的登录检查,要求您输入登录凭据以保存它们。


10

我找到了解决方法(感谢 VonC):

前往:控制面板用户账户管理您的凭据Windows 凭据 → 在通用凭据下,有一些与 GitHub 相关的凭据。 点击它们并单击“删除”。

这将使我退出登录,所以下次进行推送时,它会要求我输入用户名和密码。


1
我唯一成功移除Git凭证存储的方法是运行以下命令: git credential-manager remove

这不是一个好的解决方案,因为一旦您删除管理器,每次都会要求用户输入用户名和密码。 - PratikShah

1
如果您正在使用多个帐户(这就是我来到这里的原因),最好在全局Git配置中取消设置凭据管理器并使用提示屏幕,以提高效率。
目前无法在凭据管理器文档中找到如何管理多个帐户的信息,这些文档非常简略。

1
因为您在另一个帐户中登录,而该帐户没有访问此存储库的权限。如果您使用的是Mac OS,请转到Keychain Access,在其中搜索gitlab.com,将其删除,然后再次尝试git clone。

1
此外,如果您有SSH密钥,请不要忘记删除它。即使您删除了凭据,如果您有SSH密钥,仍然可以自动登录。

1

首先,您需要从Credential Manager中删除token github。

步骤:
  1. 控制面板 -> 用户账户 ->凭证管理器
  2. 选择Windows凭据并删除github-authentification.github.auth的数据

-1
如果您想更改帐户,请稍后执行以下操作:
git config --global user.name "new name"
git config --global user.email "new email"
git config --list
git help
git help commit

4
但是我在我的回答中提到了:“首先,用户身份验证与user.name和user.email git配置无关。” - VonC
2
“as as later” 是什么意思? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接