从Git中删除凭据

问题描述 投票:428回答:28

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

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

$ 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'

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

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

windows git credentials
28个回答
507
投票

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中包含的管理器帮助程序已经取代了之前在Windows 1.8.1.1的Git中添加的wincred帮助程序。一个名为winstore的类似帮助程序也可以在线获得,并与GitExtensions一起使用,因为它提供了更多GUI驱动的界面。经理助手提供与winstore相同的GUI界面。

the Windows manual中摘录详细说明Windows凭据存储面板:

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


11
投票

需要使用相应的github usernamepassword登录

清除Windows中的用户名和密码

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

编辑窗口凭据

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

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


7
投票

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

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

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


7
投票

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

git credential-manager clear

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

git config --global credential.helper
→ manager

7
投票

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

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

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

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

7
投票

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

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

6
投票

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


5
投票

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

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

git config --global credential.helper wincred

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


5
投票

您必须在Credential Manager中更新它。

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


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

2
投票

在Windows 10 Professional上使用最新版本的git for Windows,我有一个类似的问题,我有两个不同的GitHub帐户和一个Bitbucket帐户,所以VS2017,git扩展和git bash的东西有点混乱。

我首先检查了git如何使用此命令处理我的凭据(使用提升的命令运行git bash或者你得到错误):

git config --list

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

但这没有做到这一点,所以下一步是取消设置凭据,我从我的笔记本电脑上的存储库目录中做到这一点,该目录包含我试图推送到遥控器的GitHub项目。我输入以下命令:

git config --system --unset credential.helper

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

我不确定这是一个多大的问题,大多数人可能会在一个回购中工作,但我必须跨越几个并使用不同的提供商,所以可能会再次遇到这个问题。


430
投票

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

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

Go to Credential Manager

Go to Windows Credentials and Delete the entries under Generic Credentials


2
投票

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

git remote show origin

1
投票

对于macOS用户:

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

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

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

再次尝试Push或Pull to git,它将要求提供凭据。输入存储库帐户的有效凭据。完成


1
投票

要清除Windows缓存的Git凭据管理器:

rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache

要么

rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache

0
投票

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

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

0
投票

最后为我解决的是使用GitHub桌面,转到存储库设置,并从存储库URL中删除user:pass @。然后,我尝试从命令行进行推送,并提示输入登录凭据。我把所有东西都放回去了。 Visual Studio和命令行都在工作,当然还有GitHub桌面。

GitHub Desktop-> Repository-> Repository Settings-> Remote选项卡

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

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

至:

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

点击“保存”

凭据将被清除。


0
投票

正如上面所有人所提到的,这是一个Git Credential Manager问题。由于权限,我无法修改我的凭据或操纵凭据管理器。我也无法承受在电脑上以纯文本形式设置密码。解决方法是删除intellij中的远程分支并重新添加远程分支。这将删除存储的凭据并强制刷新凭据。

enter image description here


0
投票

建立@ patthoyts的高投票答案(https://stackoverflow.com/a/15382950/4401322):

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

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

我的用例是我有两个Github crendentials;一个用于工作,一个用于游戏。

这是我如何处理这个问题:

$ 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(一个用于工作,一个用于播放)以及相应的自定义命名远程主机来解决身份验证语境化问题。


0
投票

如果上面提到的任何内容都不适合您,请尝试此操作。

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

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


-1
投票

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


135
投票

重新输入:

$ git config credential.helper store

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

警告

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

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


67
投票

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

$ git config --system --list

这显示了

credential.helper=manager

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

Manage Windows Credentials

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


41
投票

尝试使用以下命令。

git credential-manager

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

Enter image description here

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

git credential-manager uninstall

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


27
投票

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

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

Windows credentials menu


24
投票

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

git config --system -l

显示一个

credential.helper=!github --credentials

线。我解开了

git config --system --unset credential.helper

现在证书被遗忘了。


12
投票

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

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

cmdkey /list; cmdkey /delete:Target

(*由“wincred”我的意思是git config --global credential.helper wincred


12
投票
git config --list

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

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

git config credential.helper ""

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

© www.soinside.com 2019 - 2024. All rights reserved.