关于Windows:从Git删除凭据

Remove credentials from Git

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

今天,我不得不提交代码并将其推送到其他代码中,但是我遇到了一些麻烦。

1
2
3
$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://[email protected]/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'

为了避免凭证缓存...

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


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

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

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

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

Open User Accounts by clicking the Start button Picture of the Start button, clicking Control Panel, clicking User Accounts and Family Safety (or clicking User Accounts, if you are connected to a network domain), and then clicking User Accounts. In the left pane, click Manage your credentials.


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

  • 转到凭证管理器
  • 转到Windows凭据
  • 删除"通用凭据"下的条目
  • 重新尝试连接。这次,它将提示您输入正确的用户名和密码。

Go to Credential Manager

Go to Windows Credentials and Delete the entries under Generic Credentials


重新输入:

1
$ git config credential.helper store

然后将提示您再次输入您的凭据。

警告

Using this helper will store your passwords unencrypted on disk

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


我遇到了与OP相同的问题。它使用了存储在系统中某个地方的旧Git凭据,并且我想将Git与新凭据一起使用,因此我运行了命令

1
$ git config --system --list

这显示了

1
credential.helper=manager

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

Manage Windows Credentials

我只是删除了这些凭据,当我执行git push时,它询问了我的GitHub凭据,它的工作原理很吸引人。


尝试使用以下命令。

1
git credential-manager

您可以在此处获得各种选项来管理您的凭据(请检查以下屏幕)。

Enter image description here

或者,您甚至可以直接尝试以下命令:

1
git credential-manager uninstall

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


就我而言,Git使用Windows存储凭据。

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

Windows credentials menu


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

1
git config --system -l

显示一个

1
credential.helper=!github --credentials

线。我取消了

1
git config --system --unset credential.helper

现在忘记了凭据。


1
git config --list

将显示credential.helper = manager(在Windows计算机上)

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

1
git config credential.helper""

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


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

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

cmdkey /list; cmdkey /delete:Target

(*用" wincred"表示git config --global credential.helper wincred)


进行" git pull"时遇到相同的错误,这就是我解决的方法。

  • 将仓库更改为HTTPS
  • 运行命令git config --system --unset credential.helper
  • 运行命令git config --system --add credential.helper manager
  • 测试命令git pull
  • 在弹出的登录窗口中输入凭据。
  • Git拉成功完成。

  • 需要分别使用github usernamepassword登录

    在Windows中清除用户名和密码

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

    编辑Windows凭证

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

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


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

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

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

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

    enter image description here


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

    1
    git credential-manager clear

    这是在2016年中添加的。要检查是否使用凭证管理器:

    1
    2
    git config --global credential.helper
    → manager

    从Windows当前登录用户文件夹中的.gitconfig文件中删除以下行:

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

    这对我有用,现在当我按下遥控器时,它会再次要求我输入密码。


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

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


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

    1
    git remote show origin


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


    就我而言,我找不到Windows凭据管理器(Windows 7)中保存的凭据。

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

    1
    git config --global credential.helper wincred

    老实说,真是个冰雹玛丽,看看它是否会抹掉我的证书,并且确实有效。


  • 转到C:\Users\
  • 检查.git-credentials文件
  • 根据您的要求删除内容或修改
  • 重新启动您的终端

  • 在Windows 10 Professional上使用Windows的最新版本git时,我遇到了类似的问题,即我有两个不同的GitHub帐户以及一个Bitbucket帐户,因此VS2017,git扩展和git bash有点令人困惑。

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

    1
    git config --list

    我找到了"凭证管理器"条目,因此我单击了"开始"按钮>键入"凭证管理器",然后左键单击了启动应用程序的凭证管理器"大喊"安全图标。然后,我单击Windows凭据选项卡,找到我当前的git帐户(恰好是Bitbucket)的条目,因此我删除了此帐户。

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

    1
    git config --system --unset credential.helper

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

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


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

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

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

    https://pork@[email protected]/MyProject/MyProject.git

    至:

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

    点击"保存"

    凭据将被清除。


    对于macOS用户:

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

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

  • 前往搜寻器
  • 转到应用程序
  • 转到实用程序文件夹
  • 开放式钥匙串访问
  • 选择github.com并右键单击它

    删除" github.com"

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


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

    1
    rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

    要么

    1
    rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache

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

    1
    c:\users\[username]\.git-credentials


    当上述任何方法都不对您有用时,请尝试此操作。

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

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


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


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

    enter image description here


    从@patthoyts的最高答案(https://stackoverflow.com/a/15382950/4401322)构建:

    他的答案使用但不解释"本地"对"全局"对"系统"配置。他们的官方git文档在这里,值得一读。

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

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

    这是我处理问题的方法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    $ 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://[email protected]':
    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/config与关联的SSH密钥一起用于Github(一个用于工作,一个用于娱乐)以及相应的自定义远程主机来解决身份验证。情境化。