从Git中删除凭据

时间:2013-03-13 09:20:22

标签: 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

我无能为力,会再次输入密码。

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

我试过了:

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

为了取消设置密码

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

以避免凭据缓存...

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

36 个答案:

答案 0 :(得分:481)

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

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

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

从详细说明Windows凭据存储面板的the Windows manual中提取:

  

单击“开始”按钮“开始”按钮的图片,再依次单击“控制面板”,“用户帐户和家庭安全”(如果已连接到网络域,则单击“用户帐户”),然后单击“用户帐户”,打开“用户帐户”。在左侧窗格中,单击“管理您的凭据。”

答案 1 :(得分:403)

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

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

Go to Credential Manager

Go to Windows Credentials and Delete the entries under Generic Credentials

答案 2 :(得分:133)

重新输入:

$ git config credential.helper store

然后系统会提示您再次输入凭据。

警告

  

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

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

答案 3 :(得分:63)

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

$ git config --system --list

显示

credential.helper=manager

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

Manage Windows Credentials

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

答案 4 :(得分:39)

尝试使用以下命令。

git credential-manager

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

Enter image description here

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

git credential-manager uninstall

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

答案 5 :(得分:27)

就我而言,Git正在使用Windows来存储凭证。

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

Windows credentials menu

答案 6 :(得分:23)

我找到了对我有用的东西。当我向OP写评论时,我未能检查系统配置文件:

git config --system -l

显示

credential.helper=!github --credentials

线。我用

取消了它
git config --system --unset credential.helper

现在忘记了凭据。

答案 7 :(得分:12)

git config --list

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

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

即可
git config credential.helper ""

这样,git每次都会提示输入密码,忽略“经理”里面保存的内容。

答案 8 :(得分:12)

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

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

cmdkey /list; cmdkey /delete:Target

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

答案 9 :(得分:10)

需要使用相应的github usernamepassword

登录

清除Windows中的用户名和密码

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

修改 Windows凭据

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

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

答案 10 :(得分:7)

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

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

这对我有用,现在当我推送到遥控器时,它再次要求我输入密码。

答案 11 :(得分:7)

执行“ git pull”时出现相同的错误,这就是我的解决方法。

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

答案 12 :(得分:6)

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

答案 13 :(得分:6)

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

git credential-manager clear

这是added mid-2016。要检查是否使用了凭据管理器:

git config --global credential.helper
→ manager

答案 14 :(得分:5)

在我的情况下,我找不到Windows Credential Manager(Windows 7)中保存的凭据。

我可以通过执行

来重置我的凭据
git config --global credential.helper wincred

老实说,玛丽要看看它是否会消灭我的凭据,它实际上是有效的。

答案 15 :(得分:5)

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

答案 16 :(得分:5)

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

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

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

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

    enter image description here

答案 17 :(得分:5)

如果您的凭据存储在凭据助手中(通常是这种情况),则删除特定主机的永久密码的便携式方法是致电git credential reject

  • 一行:

    $ echo "url=https://appharbor.com" | git credential reject
    
  • 或以交互方式:

    $ git credential reject
    protocol=https
    host=gitlab.com
    username=me@example.com
    ↵
    
    • ↵是Enter符号,只需在输入末尾按Enter键两次,请勿复制/粘贴
    • wincred似乎无法识别用户名,因此请避免在Windows上按用户名进行过滤

然后,要输入新密码,请输入git fetch

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

答案 18 :(得分:4)

您必须在Credential Manager中更新它。

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

答案 19 :(得分:3)

对于Windows 10,请转到以下路径,

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

此位置将有2个标签,

  1. Web凭据和2. Windows凭据。

单击Windows凭据选项卡,在这里您可以看到存储的github凭据, 在“通用凭据”标题下。

您可以从此处删除这些证书,然后尝试重新克隆-因为我们刚刚从Windows 10系统中删除了存储的凭据,它将立即要求用户名/密码

答案 20 :(得分:3)

要添加到@ericbn的https://stackoverflow.com/a/41111629/579827中,请参阅以下示例命令,我已将这些命令嵌入到脚本中,并运行该脚本以在更新密码时更新所有密码。由于它很具体,可能无法原样使用,但它显示了cmdkey.exe在现实生活中的用法。

⚠这是在 cygwin

中运行的 shell 脚本

⚠之所以可行,是因为我使用了专用的git repos,它们都使用相同的密码进行身份验证(您可能不想使用相同的凭据进行循环,但是您可以重用此示例/list命令来提取列表已注册凭证的数量)⚠

entries=`cmdkey.exe /list: | grep git | sed -r -e 's/^[^:]+:\s*(.*)$/\1/gm'`
for entry in ${entries}
do
    cmdkey.exe "/delete:${entry}"
    cmdkey.exe "/generic:${entry}" "/user:${GIT_USERNAME}" "/pass:${GIT_PASSWORD}"
done

答案 21 :(得分:2)

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

我首先检查了git如何使用此命令处理我的凭据(使用提升权限的命令运行git bash或出现错误):

git config --list

我找到了Credential Manager条目,因此我单击了“开始”按钮>,将Credential Manager键入,然后左键单击了启动应用程序的凭证管理器yell safe图标。然后,我单击Windows凭据选项卡,找到了我当前git帐户的条目,该条目恰好是Bitbucket,所以我删除了该帐户。

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

git config --system --unset credential.helper

然后我进行了git push,然后提示我输入我输入的GitHub用户名(我需要的正确用户名),然后关联的密码和所有内容都正确推送了。

我不确定这会带来多大的影响,大多数人可能都只使用一个仓库,但我必须跨多个仓库并使用不同的提供程序,以便可能再次遇到此问题。

答案 22 :(得分:1)

这种方法对我有用,应该与OS无关。它有点笨拙,但是很快,可以让我重新输入凭据。

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

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

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

然后删除遥控器

$ git remote remove origin

然后将其重新添加

$ git remote add origin https://bitbucket.org/org/~username/your-project.git

答案 23 :(得分:1)

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

git credential-cache exit

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

答案 24 :(得分:1)

原始问题摘要

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

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

原因

git附带的Microsoft Git-Credential-Manager(简称GCM)默认情况下按主机存储凭据。可以通过检查Windows凭据管理器来验证这一点(请参见其他答案,以英语,法语和德语Windows版本访问它)。 因此,默认情况下无法在同一主机(此处为github.com)上使用多个帐户。

解决方案

Configure GCM包括每个凭证条目的其他信息。 我建议包括HTTP(S)[存储库]路径,以便能够为每个存储库使用单独的帐户。

对于所有可能的主机:

git config --global credential.useHttpPath true

仅适用于github.com:

git config --global credential.github.com.useHttpPath true

看看GCM文档,也许您想指定一些不同的内容。

答案 25 :(得分:0)

在您的项目根文件夹中打开 .git / config 。该文件包含有关远程URL和您的凭据类型的详细信息。

您在此文件中当前的远程URL可能正在存储凭据。从github复制远程URL并更新此配置文件中的URL。

像下面这样:

[remote "origin"]
    url = [update it]
    fetch = +refs/heads/*:refs/remotes/origin/*
[credential]
    helper = manager

现在,当您尝试推送代码时,它将要求提供凭据。谢谢

答案 26 :(得分:0)

Mac 设备的答案:

前往

Applications/Utilities/Keychain Acccess

搜索 git.credentials,然后删除所需 URL 的 git 凭据。

答案 27 :(得分:0)

在上述任何方法都无法满足您的情况时,请尝试此操作。

git config credential.helper 'cache --timeout=30'

这将每3秒删除一次缓存,并询问用户名和密码。您可以使用增加的超时值重新运行该命令。

答案 28 :(得分:0)

要清除Windows缓存的Git凭据管理器,请执行以下操作:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache

答案 29 :(得分:0)

根据@patthoyts的最高评价(https://stackoverflow.com/a/15382950/4401322)构建:

他的答案使用但不解释“本地”配置,“全局”配置和“系统”配置。它们的官方git文档是here,值得一读。

例如,我在Linux上,并且不使用 system 配置,因此我从不使用--system标志,但通常需要区分{{1 }}和--local配置。

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

这是我处理问题的方法:

--global

还值得注意的是,有一些方法可以完全避免此问题,例如,您可以将$ 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 与关联的SSH密钥用于Github(一个用于工作,一个用于娱乐)并相应地自定义命名远程主机也可以解决身份验证上下文问题。

答案 30 :(得分:0)

对于macOS用户:

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

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

  1. 转到Finder
  2. 转到应用程序
  3. 转到“实用工具”文件夹
  4. 打开钥匙串访问
  5. 选择github.com,然后右键单击它

    删除“ github.com”

再试一次将其推入或拉入git,它将要求提供凭据。 输入存储库帐户的有效凭证。 完成

答案 31 :(得分:0)

正如以上每个人所提到的,这是一个Git Credential Manager问题。 由于权限的原因,我无法修改我的凭证或操纵凭证管理器。 我也负担不起在PC上以纯文本形式设置密码。 一种解决方法是删除intellij中的远程分支,然后重新添加该远程分支。这将删除存储的凭证,并强制刷新凭证。

enter image description here

答案 32 :(得分:0)

对我来说,最终解决此问题的方法是使用GitHub桌面,转到存储库设置,然后从存储库URL中删除user:pass @。然后,我尝试从命令行进行推送,并被提示输入登录凭据。我把这些放进去之后,一切恢复了正常。 Visual Studio和命令行都可以使用,当然GitHub桌面也可以使用。

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

从以下位置更改主远程存储库(来源)

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

收件人:

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

点击“保存”

凭据将被清除。

答案 33 :(得分:0)

在我们的案例中,清除用户的.git-credentials文件中的密码对我们有用。

indexer=StringIndexer(inputCol="classname",outputCol="ClassCategory")

答案 34 :(得分:-1)

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

git remote show origin

答案 35 :(得分:-1)

如果您使用密钥对进行身份验证,则可以删除或移动私钥,或停止密钥代理并尝试使用。