从Git中删除凭据

bal*_*dre 522 windows git credentials

我正在使用几个存储库,但最近我只是在内部工作,一切都很棒.

今天我不得不承诺并将代码推送到其他代码中,但我遇到了一些麻烦.

$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://gavekortet@appharbor.com/mitivo.git/info/refs?service=git-receive-pack
fatal: HTTP request failed
Run Code Online (Sandbox Code Playgroud)

我无能为力,这将再次带来密码输入.

如何重置系统上的凭据,以便Git会询问我该存储库的密码?

我试过了:

  • git config --global --unset core.askpass

为了取消设置密码

  • git config credential.helper 'cache --timeout=1'

为了避免凭证缓存......

似乎没有任何作用; 有没有人有更好的主意?

pat*_*yts 589

Git凭证缓存运行一个守护程序进程,该进程将您的凭据缓存在内存中并按需将其移出.因此,如果您继续将此作为cache.helper选项使用,那么杀死您的git-credential-cache-daemon进程会抛弃所有这些并导致重新提示您输入密码.

您还可以使用禁用Git凭据缓存的使用git config --global --unset credential.helper.然后重置它,您将继续拥有其他存储库(如果有)的缓存凭据.git config --system --unset credential.helper如果已在系统配置文件中设置(例如,Git for Windows 2),则可能还需要执行此操作.

在Windows上,您可能最好使用管理器帮助程序(git config --global credential.helper manager).这会将您的凭据存储在Windows凭据存储中,该凭据存储具有控制面板界面,您可以在其中删除或编辑存储的凭据.使用此商店,您的详细信息将通过Windows登录进行保护,并且可以在多个会话中保留.Git for Windows 2.x中包含的管理器帮助程序已经取代了之前在Windows 1.8.1.1的Git中添加的wincred帮助程序.一个名为winstore的类似帮助程序也可以在线获得,并与GitExtensions一起使用,因为它提供了更多GUI驱动的界面.该经理助手提供了相同的GUI界面winstore.

从详细介绍Windows凭据存储面板的Windows手册中摘录:

通过单击"开始"按钮,"开始"按钮的图片,"控制面板","用户帐户和家庭安全"(或单击"用户帐户",如果已连接到网络域),然后单击"用户帐户",打开"用户帐户".在左窗格中,单击"管理您的凭据".

  • 我在Windows 7下的`Control Panel\User Accounts\Credential Manager`中找到了Windows Credential控制面板 (184认同)
  • @patthoyts您对禁用凭据缓存的建议对我来说是最好的解决方案.但是,您是否可以编辑您的答案,以包含真正禁用Windows上缓存所需的额外`git config --system --unset credential.helper`命令?(必须从管理员命令提示符运行.) (9认同)
  • 在Windows 8/10下,详细的用户帐户设置位于"经典"控制面板下,*不是"设置"应用程序(现代UI).只是为了避免混淆. (5认同)
  • 杀死进程不会在某处留下任何痕迹,以便仍然可以访问密码?根据 git 手册,它们存储在“纯文本”中。 (2认同)
  • 在 Windows 10 中,转到控制面板\所有控制面板项目\凭据管理器。GitHub 可能有一个通用凭证。您可以在那里更新用户名和密码。 (2认同)

Ven*_*ula 516

如果Windows计算机上出现此问题,请执行以下操作.

  • 去Credential Manager
  • 转到Windows凭据
  • 删除Generic Credentials下的条目
  • 再次尝试连接.这一次,它应该提示您输入正确的用户名和密码.

去Credential Manager

转到Windows凭据并删除Generic Credentials下的条目

  • 如果有人在德国本地化的机器上搜索它,那就是_"Anmeldeinformationsverwaltung"_在路径`Systemsteuerung\Alle Systemsteuerungselemente\Anmeldeinformationsverwaltung`上. (14认同)
  • 如果您无法通过 Windows 访问凭据管理器,您可以从命令提示符运行此命令来访问它:rundll32.exe keymgr.dll,KRShowKeyMgr (5认同)
  • 仅当您的`credential.helper = manager`时才有意义。要测试此类型,请输入git config --list。如果将其设置为“ store”,则凭据不会存储在凭据存储中,而是未加密存储。 (3认同)
  • 我只需要删除名为`git:https:// github.com`的凭证,下次我使用PyCharm克隆了一个仓库时,我被提示输入我的用户名/密码.我有多个github帐户,错误的帐户被缓存. (2认同)
  • 或者,您可以在“凭据管理器”中更改用户/密码。那对我也有用 (2认同)
  • 对于所有德国用户:Systemsteuerung\Benutzerkonten\Anmeldeinformationsverwaltung (2认同)

aaa*_*fly 142

重新输入:

$ git config credential.helper store
Run Code Online (Sandbox Code Playgroud)

然后,系统将提示您再次输入凭据.

警告

使用此帮助程序会将未加密的密码存储在磁盘上

资料来源:https://git-scm.com/docs/git-credential-store

  • 此命令不要求再次输入我的凭据,此命令无效 (25认同)
  • @ShirishHerwade尝试git pull,然后您会看到提示屏幕 (2认同)
  • @jkokorian 要撤消此命令,请从 `.git/config` 中删除相关行。 (2认同)

Mou*_*rya 88

我遇到了与OP相同的问题.它把我的旧Git凭据存储在系统的某个地方,我想用我的新凭据使用Git,所以我运行了命令

$ git config --system --list
Run Code Online (Sandbox Code Playgroud)

这显示了

credential.helper=manager
Run Code Online (Sandbox Code Playgroud)

每当我执行git push它时,都会使用我长期设置的旧用户名,并且我想使用新的GitHub帐户来推送更改.我后来发现我的旧GitHub帐户凭据存储在 控制面板用户帐户凭据管理器管理Windows凭据下.

管理Windows凭据

我刚刚删除了这些凭据,当我执行git push它时,它询问了我的GitHub凭据,它就像一个魅力.

  • [Git Credential Manager Core](https://github.com/microsoft/Git-Credential-Manager-Core) 是更新的默认凭据管理器。在最新版本的 Git 中,`git config --global --list` 现在应该返回 `credential.helper=manager-core` 而不是 `credential.helper=manager` (5认同)
  • @VonC 我花了一天的时间才发现这一点,因为我不知道这种存储凭据的机制。 (2认同)

Him*_*wal 45

尝试使用以下命令.

git credential-manager
Run Code Online (Sandbox Code Playgroud)

在这里,您可以获得管理凭据的各种选项(请查看以下屏幕).

在此输入图像描述

或者你甚至可以直接尝试这个命令:

git credential-manager uninstall
Run Code Online (Sandbox Code Playgroud)

这将在每个服务器交互请求上再次开始提示输入密码.

  • 为什么我得到 - `git:'credential-manager'不是git命令.见'git --help' (7认同)
  • 移除失败。U_U按任意键继续...致命:遇到InvalidOperationException。当任一应用程序没有控制台或控制台输入已从文件重定向时,无法读取键。尝试Console.Read.```(带有漂亮的`U_U` emoji表情:) (3认同)
  • 不确定,为什么它不适合你,但即使在最新的git版本中,它也可用.请参阅此链接以获取更多信息 - https://git-scm.com/book/gr/v2/Git-Tools-Credential-Storage (2认同)

Sol*_*uiD 29

就我而言,Git正在使用Windows来存储凭据.

您所要做的就是删除存储在Windows帐户中的存储凭据:

Windows凭据菜单


dam*_*911 26

我找到了适合我的东西.当我向OP写评论时,我未能检查系统配置文件:

git config --system -l
Run Code Online (Sandbox Code Playgroud)

显示一个

credential.helper=!github --credentials
Run Code Online (Sandbox Code Playgroud)

线.我解开了

git config --system --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

现在证书被遗忘了.

  • Ankur,如果您配置了几个凭据帮助程序,则可能需要以2-3次类似的方式运行建议的命令.`git config --global --unset credential.helper`,如果你以某种方式在那里明确地设置它,可能只是你的存储库中的`git config --unset credential.helper`. (2认同)
  • 感谢您的解决方案。只是一个细节:就我而言,我必须以管理员身份启动命令提示符 (2认同)

Zhe*_* Hu 14

git config --list
Run Code Online (Sandbox Code Playgroud)

将显示credential.helper = manager(这是在Windows机器上)

要禁用当前本地git文件夹的此缓存用户名/密码,只需输入即可

git config credential.helper ""
Run Code Online (Sandbox Code Playgroud)

这样,git每次都会提示输入密码,忽略"manager"中保存的内容.


Tah*_*lid 14

在 Windows 10 Professional 上使用适用于 Windows 的最新版本的 git,我遇到了类似的问题,即我有两个不同的 GitHub 帐户和一个 Bitbucket 帐户,因此对于 VS2017、git 扩展和 git bash,事情有点混乱。

我首先检查了 git 如何使用此命令处理我的凭据(使用提升的命令运行 git bash 否则您会收到错误):

git config --list
Run Code Online (Sandbox Code Playgroud)

我找到了 Credential Manager 条目,所以我点击了 START 按钮 > 输入 Credential Manager 到并左键单击启动应用程序的凭证管理器黄色安全图标。然后我点击 Windows Credentials 选项卡,找到了我当前 git 帐户的条目,它恰好是 Bit-bucket,所以我删除了这个帐户。

但这并没有解决问题,所以下一步是取消设置凭据,我从笔记本电脑上的存储库目录中执行此操作,该目录包含我试图推送到远程的 GitHub 项目。我输入了以下命令:

git config --system --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

然后我做了一个 git push 并提示我输入一个我输入的 GitHub 用户名(我需要的正确用户名),然后是关联的密码,一切都被正确推送。

我不确定这会带来多大的问题,大多数人可能会在一个存储库中工作,但我必须跨多个并使用不同的提供程序工作,因此可能会再次遇到此问题。


eri*_*cbn 13

在带有"wincred"*的Windows 2003 Server中,其他答案都没有帮助我.我不得不使用cmdkey.

  • cmdkey /list 列出所有存储的凭据.
  • cmdkey /delete:Target 删除具有"目标"名称的凭证.

cmdkey/list;  cmdkey/delete:目标

(*我的意思是"wincred" git config --global credential.helper wincred)


Ami*_*t K 12

需要使用相应的github usernamepassword

清除Windows中的用户名和密码

控制面板\用户帐户\凭据管理器

编辑窗口凭据

删除现有用户,现在转到命令提示符,写入push命令,显示一个github弹出窗口,输入username/ emailpassword.

现在我们可以在切换用户后推送代码.


小智 12

做'git pull'时得到同样的错误,这就是我修复它的方法.

  1. 将repo更改为HTTPS
  2. 运行命令'git config --system --unset credential.helper'
  3. 运行命令'git config --system --add credential.helpder manager'
  4. 测试命令'git pull'
  5. 在弹出的登录窗口中输入凭据.
  6. Git pull成功完成.


ami*_*ree 12

如果您希望 git 忘记旧的保存凭据并重新输入用户名和密码,您可以使用以下命令执行此操作:

git credential-cache exit
Run Code Online (Sandbox Code Playgroud)

运行上述命令后,如果您尝试推送任何内容,它将提供输入用户名和密码的选项。


小智 11

如果您的凭据存储在凭据帮助程序中(通常是这种情况),则删除为特定主机保留的密码的便携式方法是调用git credential reject

  • 在一行中:

    $ echo "url=https://appharbor.com" | git credential reject
    
    Run Code Online (Sandbox Code Playgroud)
  • 或交互:

    $ git credential reject
    protocol=https
    host=gitlab.com
    username=me@example.com
    ?
    
    Run Code Online (Sandbox Code Playgroud)
    • ? 是回车符号,只需在输入结束时按两次回车键,不要复制/粘贴它
    • wincred 似乎无法识别用户名,因此请避免在 Windows 上按用户名进行过滤

之后,要输入新密码,请键入git fetch

https://git-scm.com/docs/git-credential


Pra*_*tel 10

当您在同一台计算机上使用多个Git帐户时,会出现此错误。

如果您使用的是macOS,则可以删除github.com的已保存凭据。

请按照以下步骤删除github.com凭证。

  1. 开放式钥匙串访问
  2. 查找github
  3. 选择github.com并右键单击它
  4. 删除“ github.com”
  5. 再试一次将其推入或拉入git,它将要求提供凭据。
  6. 输入存储库帐户的有效凭证。
  7. 完成了

    在此处输入图片说明

  • 终于有一个适用于 Mac 且运行完美的解决方案 (2认同)
  • 这在 Mac 上对我不起作用。我保存了几个 github 密码并将其全部删除,但仍然没有要求我提供凭据。我已经尝试了我所看到的一切,但没有任何效果。我保存了 2 个凭据,但无法删除它们。有什么帮助吗? (2认同)

Liv*_* M. 9

从位于Windows当前登录用户文件夹中的.gitconfig文件中删除此行:

[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"
Run Code Online (Sandbox Code Playgroud)

这对我有用,现在当我推送到远程它再次要求我的密码.


Sim*_*ter 9

如果使用Git Credential Manager for Windows(当前版本通常这样做):

git credential-manager clear
Run Code Online (Sandbox Code Playgroud)

这是在2016年中期添加的.要检查是否使用了凭据管理器:

git config --global credential.helper
? manager
Run Code Online (Sandbox Code Playgroud)


小智 8

您必须在凭据管理器中对其进行更新。

转到控制面板>用户帐户>凭据管理器> Windows凭据。您将在列表中看到Git凭据(例如git:https://)。单击它,更新密码,然后从Git bash执行git pull / push命令,它不会再抛出任何错误消息。


Ale*_*lex 8

没有给出任何答案对我有用。但这最终对我有用:

rm -rf ~/.git-credentials
Run Code Online (Sandbox Code Playgroud)

这将删除所有凭据!当您使用新git命令时,系统会要求您输入密码!


Sur*_*ude 7

对于 macOS 用户:

当您在同一台机器上使用多个 Git 帐户时会出现此错误。

请按照以下步骤删除 github.com 凭据。

  1. 转到查找器
  2. 转到应用程序
  3. 转到实用程序文件夹
  4. 打开钥匙串访问
  5. 选择 github.com 并右键单击它

删除“github.com”

再次尝试 Push 或 Pull 到 git,它会要求提供凭据。输入存储库帐户的有效凭据。完成,现在赞成答案。


Yoa*_*mar 6

您可以credential.helper=!github --credentials从以下文件C:\Program Files\Git\mingw64\etc\gitconfig中删除该行,以删除git的凭据


Jef*_*Fay 6

在我的情况下,我找不到Windows凭据管理器(Windows 7)中保存的凭据.

我能够通过执行来重置我的凭据

git config --global credential.helper wincred
Run Code Online (Sandbox Code Playgroud)

老实说,这是玛丽,看看它是否会消灭我的凭据,它确实有效.


irb*_*ana 6

根据@patthoyts 的高票答案构建:

他的答案使用但没有解释localvs. globalvs.system配置。他们的官方 git 文档在这里,值得一读。

例如,我在 Linux 上,不使用系统配置,所以我从不使用--system标志,但通常需要区分--local--global配置。

我的用例是我有两个 Github 凭证;一台用于工作,一台用于娱乐。

这是我处理问题的方法:

$ cd work
# do and commit work
$ git push origin develop
# Possibly prompted for credentials if I haven't configured my remotes to automate that. 
# We're assuming that now I've stored my "work" credentials with git's credential helper.

$ cd ~/play 
# do and commit play
$ git push origin develop                                                                   
remote: Permission to whilei/specs.git denied to whilei.                
fatal: unable to access 'https://github.com/workname/specs.git/': The requested URL returned error: 403

# So here's where it goes down:
$ git config --list | grep cred
credential.helper=store # One of these is for _local_
credential.helper=store # And one is for _global_

$ git config --global --unset credential.helper
$ git config --list | grep cred
credential.helper=store # My _local_ config still specifies 'store'
$ git config --unset credential.helper
$ git push origin develop
Username for 'https://github.com': whilei
Password for 'https://whilei@github.com':
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 1.10 KiB | 1.10 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/whilei/specs.git
   b2ca528..f64f065  master -> master

# Now let's turn credential-helping back on:
$ git config --global credential.helper "store"
$ git config credential.helper "store"
$ git config --list | grep cred
credential.helper=store # Put it back the way it was.
credential.helper=store
Run Code Online (Sandbox Code Playgroud)

还值得注意的是,有一些方法可以完全避免这个问题,例如,您可以将~/.ssh/config's 与 Github 的关联 SSH 密钥(一个用于工作,一个用于娱乐)以及相应的自定义命名远程主机一起使用来解决身份验证上下文化问题。


Jos*_*osh 6

这种方法对我有用,应该与操作系统无关。这有点笨手笨脚,但很快,让我重新输入凭据。

只需找到您希望为其重新输入凭据的远程别名。

$ git remote -v 
origin  https://bitbucket.org/org/~username/your-project.git (fetch)
origin  https://bitbucket.org/org/~username/your-project.git (push)
Run Code Online (Sandbox Code Playgroud)

复制项目路径( https://bitbucket.org/org/~username/your-project.git)

然后取下遥控器

$ git remote remove origin
Run Code Online (Sandbox Code Playgroud)

然后加回来

$ git remote add origin https://bitbucket.org/org/~username/your-project.git
Run Code Online (Sandbox Code Playgroud)


Din*_*til 5

  1. C:\Users\<current-user>
  2. 检查.git-credentials文件
  3. 根据您的要求删除内容或修改
  4. 重新启动您的终端


小智 5

最终为我解决这个问题的是使用 GitHub 桌面,转到存储库设置,然后从存储库 url 中删除 user:pass@。然后,我尝试从命令行进行推送,并提示输入登录凭据。当我把它们放进去之后,一切都恢复正常了。Visual Studio 和命令行都可以运行,当然还有 GitHub 桌面。

GitHub Desktop->存储库->存储库设置->远程选项卡

将主远程存储库(来源)更改为:

https://pork@muffins@github.com/MyProject/MyProject.git

到:

https://github.com/MyProject/MyProject.git

点击“保存”

凭证将被清除。


Jas*_*n S 5

至少在Windows上git remote show [remote-name]可以使用,例如

git remote show origin
Run Code Online (Sandbox Code Playgroud)

  • 对我很有魅力。 (2认同)

Mad*_*des 5

Update实际上useHttpPath是一个git 配置,它应该适用于所有 GCM。已更正。

原始问题的摘要

  • 在 Windows 上使用 git
  • 在 GitHub 上的多个存储库上工作
  • 用于另一个 GitHub 存储库的错误凭据

尽管标题说“删除凭据”,但描述让我假设您可能在 GitHub 上拥有多个帐户,例如与工作相关的帐户和私人项目的帐户。(至少那个问题让我找到了这个主题。)如果是这样,请继续阅读,否则,请忽略答案,但它可能在某些时候派上用场。

原因

Git 凭证管理器(简称 GCM),例如 Microsoft 的Windows GCM,默认情况下会存储每个主机的凭证。这可以通过检查 Windows 凭据管理器来验证(请参阅有关如何在英语、法语和德语 Windows 版本上访问它的其他答案)。因此,默认情况下不可能在同一主机(此处为 github.com)上使用多个帐户。

2020 年 10 月,GCM for Windows 被弃用并被GCM Core取代。此处的信息仍然适用于新的 GCM,它甚至应该使用 GCM for Windows 存储的凭据。

解决方案

配置 git以包含存储库的完整路径作为每个凭证条目的附加信息。还记录在GCM for Windows上。
我个人更喜欢包含 HTTP(S) [存储库] 路径,以便能够为每个存储库使用单独的帐户。

对于所有可能的主机:

git config --global credential.useHttpPath true
Run Code Online (Sandbox Code Playgroud)

仅适用于 github.com:

git config --global credential.github.com.useHttpPath true
Run Code Online (Sandbox Code Playgroud)

查看 GCM 和git文档,也许您想指定不同的内容。


Vik*_*han 5

请运行以下命令 -

git config --global credential.helper cache
Run Code Online (Sandbox Code Playgroud)

然后运行任何 git 命令,例如 git pull ,它会要求输入用户名和密码。输入详细信息,如果您想存储 git 凭据,请运行以下命令 -

git config --global credential.helper store
Run Code Online (Sandbox Code Playgroud)