2013-03-13 576 views
214

我正在与几个仓库合作,但最近我只是在内部工作,而且都很棒。从Git中删除凭证

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

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

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

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

+0

你有'〜/ .netrc'文件吗? – robinst

+1

@robinst它是一台Windows机器,我找不到该文件,甚至没有从Git Bash中获得... – balexandre

+0

@balexandre对于Windows机器,我更喜欢使用新的(git 1.8.3)证书助手'netrc',这会将*多个*凭证存储在*加密的*文件中。每次会话都要输入密码,因为缓存只能“缓存”密码一段时间。看到一个[完整的例子在这里](http://stackoverflow.com/a/18362082/6309)。 – VonC

回答

243

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

您还可以使用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登录保护,并且可以在多个会话中保留。包含在Git for Windows 2.x中的管理器帮助程序替代了早先的wincred帮助程序,该帮助程序已在Git for Windows 1.8.1.1中添加。一个名为winstore的类似帮助程序也可以在线获得,并与GitExtensions一起使用,因为它提供了更多的GUI驱动界面。 管理器帮手提供与winstore相同的GUI界面。

摘自the Windows manual详细介绍了Windows凭据店面板:

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

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

这为我工作,现在当我推到远程再次询问我的密码:

+0

这是你提到的winstore帮手吗? https://gitcredentialstore.codeplex.com/ –

+50

我在Windows 7下的“控制面板\用户帐户\凭证管理器”中找到了Windows凭证控制面板 –

+0

未杀死进程在任何地方留下任何痕迹,以便密码可能是仍然访问?根据git手册,它们以“纯文本”存储。 – Ufos

-1

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

+1

他使用https,所以这里没有涉及的关键 – CharlesB

7

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

116

重新键入:

$ git config credential.helper store 

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

警告

使用该助手将存储你的密码加密磁盘上

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

+0

我该如何撤销这个命令? – jkokorian

+0

这个命令不要求再次输入我的凭证,这个命令什么都不做。 –

18

我发现的东西,为我工作。当我写我的评论到OP我未能检查系统配置文件:

git config --system -l 

显示

credential.helper=!github --credentials 

线。我用

git config --system --unset credential.helper 

现在忘记凭证。

+1

不适用于我。 git v2,windows系统 –

+2

Ankur,如果你已经配置了几个证书助手,你可能需要以类似的方式运行建议的命令,从2-3次。 'git config --global --unset credential.helper',也许只是'git config --unset credential.helper'在你的仓库中,如果你有明确的设置它在那里。 – dragon788

0

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

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

是的,其他几个人已经陈述了这么多次 – Liam

5

可以以除去凭证混帐

26

使用下面的命令尝试从以下文件C:\Program Files\Git\mingw64\etc\gitconfig删除行credential.helper=!github --credentials

git credential-manager 

在这里你可以得到各种选项来管理你的凭证(检查下面的屏幕)。

Enter image description here

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

git credential-manager uninstall 

这将启动每个服务器交互请求再次提示输入密码。

+1

我为什么会得到 - git:'credential-manager'不是git命令。请参阅'git --help'。 – saikosen

+0

您尝试的确切命令是什么? –

+0

我使用过'git credential-manager' – saikosen

21

我面临与OP相同的问题。它走的是系统中的某个存储我的老Git的凭据,我想用Git的与我的新的凭据,所以我跑的命令

$ git config --system --list 

这表明

credential.helper=manager 

每当我进行git push是把我早已设定好的旧用户名,我想用新的GitHub帐户推送更改。后来我发现,我的老GitHub的帐户凭据被下 控制面板→用户帐户凭据管理器管理Windows凭据存储。

Manage Windows Credentials

我只是删除这些凭据,当我进行git push它要求我为我的GitHub的凭据,和它的工作就像一个魅力。

+0

最近的Git Credential Manager(https://github.com/Microsoft/Git-Credential-Manager -for-Windows)通过存储凭据工作(https://github.com/Microsoft/Git-Credential-Manager-for-Windows/issues/31)+1 – VonC

+0

@VonC它花了我一天的时间来找出这个我不知道这种存储凭据的机制。 – Mourya

+0

确实很近。谢谢你在这里提到它。 – VonC

133

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

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

Go to Credential Manager

Go to Windows Credentials and Delete the entries under Generic Credentials

+0

哦,我在一个小时内搜索了这个解决方案。谢谢! – sunlover3

+0

这只有在您的'credential.helper = manager'时才有意义。测试这种类型的'git config --list'。如果它被设置为“store”,那么凭证不会存储在凭证存储区中,而是存储为未加密的。 – Liam

+1

这应该被接受为“回答” – RezaRahmati

4

在Windows 2003服务器 “wincred” *,没有其他的答案帮助了我。我不得不使用cmdkey

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

cmdkey /list; cmdkey /delete:Target

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

4

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

我能够通过执行

git config --global credential.helper wincred 

这是一个诚实的万福玛利亚,看它是否会消灭我的凭据,并将其实际工作重置我的凭据。

+0

这对我有效;我没有在凭证管理器中删除条目。 – bdwakefield

20

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

所有你需要做的就是删除存储在您的Windows帐户存储的凭证:

Windows credentials menu

+0

这与[本答案](https://stackoverflow.com/a/39592537/542251)有何不同?或[这一个](https://stackoverflow.com/a/15382950/542251)? – Liam

7
git config --list 

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

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

git config credential.helper "" 

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

-1

需要相应的github usernamepassword

登录到清除Windows中的用户名和密码

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

编辑窗口凭证

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

现在我们能够在切换用户后推送代码。

+0

这与接受的答案相同 –