Git凭证助手-更新密码


198

我目前正在通过HTTPS使用GitHub,并在Windows 7上安装了最新版本的Git(1.9.0)以及Git凭据帮助程序。

在设置环境时,我告诉git-credentials永久记住我的用户名和密码。

我最近通过网站更新了GitHub密码,现在不再能够进行推/拉/提取等操作。

我将如何在Windows 7的git-credentials助手上更新密码?


6
很简单,使用“ git config --global credential.helper wincred”并输入用户名和密码;然后将为您存储该密码,下次您更改密码时,请在命令上方重新运行。
Akshay Lokur'3

@AkshayLokur,这是正确的答案。
拉维玛利亚

如果所有其他方法都失败了,并且您正在使用TortoiseGit,则可能要尝试通过该操作。例如,使用Tortoise进行拉取或提取操作将提示您输入密码,然后可以进行更新。然后,这似乎覆盖了Git Bash缓存,您可以再次使用bash。
保罗·伍德

Answers:


280

这些答案都没有解决我的Git凭证问题。如果有人需要,这是行得通的工具(我在Windows 8.1上使用的是Git 1.9)。

要更新您的凭据,请转到控制面板凭据管理器通用凭据。找到与您的Git帐户相关的凭据,然后编辑它们以使用更新的密码。

参考:如何在Windows上更新Git凭据

请注意,要将Windows凭据管理器用于Git,您需要按如下方式配置凭据帮助程序:

git config --global credential.helper wincred

如果您有多个GitHub帐户用于不同的存储库,则应配置凭据以使用完整的存储库路径(而不是仅使用域,这是默认设置):

git config --global credential.useHttpPath true

21
如果git config --list包含, 这应该是公认的答案credential.helper=wincred
MF

6
为我工作-谢谢-还了解了Windows凭据管理器。
rwalter

这个。更改密码不起作用,但是我删除了凭据,然后git push再次要求输入凭据,它起作用了。
BiAiB '18年

2
我认为它也适用于Windows 8.1和Windows 10。以我
为例

2
对于(像我一样)删除存储的凭据并希望出现另一个提示的任何人,但提示不显示。从凭据管理器,可以ADDGeneric Credential用的地址git:http://yourserver:port/。Http或Https相同,重要的是git:开头。
A.基耶萨

101

更改密码后,第一次尝试Git提取时,系统提示我我的用户名/密码组合无效。这是正确的,因为git-credential助手已经缓存了我的旧值。

但是,我在重新启动终端/命令提示符后尝试再次进行git提取,这一次凭证帮助程序提示我输入GitHub用户名和密码。

我怀疑最初失败的Git提取请求与重新启动终端/命令提示符一起为我解决了此问题。

希望这个答案对以后处于类似位置的其他人有所帮助!


2
只需重新启动Git Bash,它会提示对话框输入新的用户名/密码。
Quan

2
作为记录,我能够通过执行另一次提取/获取操作来解决此问题,而无需在Windows 7上重新启动Powershell会话。Windows在第二次尝试时提示我提供新的信誉。
本德尔最伟大的

重新启动控制台/应用程序使“ wincred”对我有用。(我必须重新启动控制台和“ Atom”,一切正常)
low_rents

3
再次输入任何需要凭据的git命令似乎都可以做到这一点,不仅如此git fetch,它还可以第二次使用git clone
navigator_

非常感谢你!每次更改域密码时,我都必须记住如何更新我的凭据。Gitfetch-它对我有用!
Alexander Brattsev

74

Windows,Linux和MacOS上使用命令行的解决方案

如果您已在GitHub服务器上更新了GitHub密码,则在该git fetch/pull/push命令的首次尝试中,它将生成身份验证失败消息。

git fetch/pull/push第二次执行相同的命令,并提示输入凭据(用户名和密码)。输入用户名和GitHub服务器的新更新密码,登录成功。

即使我遇到了这个问题,我也执行了上述步骤并完成了!!


// @文森特:你正在遇到什么问题?
Farooque

2
我只是反复出现远程消息:无效的用户名或密码。致命的:身份验证失败
RichMeister

1
@RichMeister:从第二次开始,它将询问用户名/密码。只需提供您的用户名/ new_password。
Farooque

3
更改密码后,在具有缓存凭据的MacOS上为我工作。第一次获取“身份验证失败...”。再次尝试并提示输入凭据,输入用户名和新密码,然后又可以正常工作
Kevin Hooke

1
这是最好/最简单的答案
Ryan Boken

73

如果您是Windows用户,则可以在Credential Manager中删除或更新您的凭据。

在Windows 10中,转到以下路径:

控制面板所有控制面板项目凭据管理器

或在“开始”菜单的“搜索Windows”部分中搜索“凭据管理器”。

然后从凭据管理器中选择“ Windows凭据”。

凭证管理器将在“通用凭证”下显示许多项目,包括您的前景和GitHub存储库

您单击Git右侧的下拉箭头,它将显示编辑和删除选项。如果删除,则下次弹出时将弹出凭据弹出窗口。或者,您可以在那里直接编辑凭据。


3
在尝试了其他选择之后,只有这个对我有用。我在此处找到信息:cmatskas.com/how-to-update-your-git-credentials-on-windows
neomib

注意:此控件无法通过METRO UI“控件面板”访问!您必须control.exe手动运行才能看到此控件。
AnrDaemon

这很有帮助!我什至不知道该工具存在。
下颚

35

首先使用Git命令找到要使用的版本git --version。如果您的版本高于1.7.10,则只需使用以下命令:

git config --global credential.helper wincred

然后执行git fetch,然后提示您更新密码。

现在,它不会在Git中多次提示输入密码。


6
这不能回答问题
disklosr

2
@disklosr是的。下次您执行远程操作时,它将强制Git提示输入更新的密码。
尼尔波

1
@Nilpo那么什么是“远程操作”?“ git push origin xxx”不应该作为远程操作吗?它没有这样做。取而代之的是我进入远程:无效的用户名或密码。
RichMeister

1
它为我工作。执行完此命令后。执行“ git fetch”,将提示您提供凭据,并提供凭据。
亚历克斯(Alex)

为什么--global呢 我是否有冒险重新获得我所有存储库而不是仅受影响的存储库的风险?
Thomas Weller

29

在我看来,这里的答案已经过时了。对于我来说,在Windows 10和Git 2.15.0下完成了这项工作:

git credential reject
protocol=https
host=github.com
<Empty line here>

然后设置新的用户名和密码:

git credential fill
protocol=https
host=github.com
<empty line here>

此后,如果凭据现在可以在所需的目标主机上工作,则应使用git credential approve- 如Git凭据的典型用法(第4步)中所述-告诉凭据帮助者将凭据标记为已批准,并在以后的连接中重用它们。


1
对我来说,按git credential fill原样进行操作,它会自动生成旧的错误密码;我必须使用此命令手动设置新的才能工作。无论如何,谢谢,这个答案帮助我解决了这个问题!
艾默生·卡多佐

顶到顶!阅读过时的解决方案浪费了多少时间。实际上,我认为应该归咎于Git凭证管理器,因为在旋转域密码时必须经历痛苦。
Janis Veinbergs

1
之后fill,我们不应该使用approve吗?
Z. Khullah

在我的机器上git credential reject永远无法完成
Thomas Weller

@ThomasWeller,您必须按Enter键,然后在其中留空行,然后完成。
atavio

19

FWIW,我偶然发现了这个同样的问题(我的老板也是如此,因此变得更加激烈)。

即时解决方案是删除或修复Windows凭据管理器中的Git条目。您可能很难在本地化的Windows版本中找到它,但是幸运的是,您可以使用或(或者如果您更喜欢经典外观)从旧的Windows+ R运行对话框中启动它。或将其放入批处理文件中供您的同事使用:。control keymgr.dllcontrol /name Microsoft.CredentialManagerrundll32.exe keymgr.dll, KRShowKeyMgrcmdkey /delete:git:http://your.git.server.company.com

在Microsoft的Git Credential Manager中,这是一个已知问题,可能会在2019年初得到解决(因此,请不要屏住呼吸)。


1
通过使用控制面板UI了解Windows Credential Manager非常有用,但是当您必须在所有计算机上进行更新时,就会感到厌烦。这个单一命令很棒,因为它完成了同一件事(删除了现有的无效凭据),这迫使git在下次需要它们时再次提示输入凭据。在Windows Server 2016年,命令语法来删除证书稍有不同: cmdkey /delete:git:https://your.git.server.company.com
基本的

/delete{:<TargetName>}官方语法,但我发现该快捷方式/del <TargetName>也有效,至少在Windows 10(1803)中有效。
雅各布

别名的好主意!delpw = !cmdkey /delete:git:$(git remote get-url $1)。用法:git delpw origin(ps:/ del在这里不起作用,也赢了10)
Z. Khullah

6

cd在您安装git-credential-winstore的目录中。如果您不知道在哪里,只需在Git Bash中运行此命令:

cat ~/.gitconfig

它应该打印如下内容:

[credential]
    helper = !'C:\\ProgramFile\\GitCredStore\\git-credential-winstore.exe'

在这种情况下,您的存储库为C:\ ProgramFile \ GitCredStore。使用Git Bash或Windows命令进入该文件夹后,只需键入:

git-credential-winstore.exe erase
host=github.com
protocol=https

别忘了按Enter两次protocol=https


2

当前的解决方案都不适合git bash 2.26.2。 如果您使用的是Windows凭据管理器,则在任何情况下都可以使用。

一个问题是Windows凭据管理器为登录用户运行。以我的情况为例,我右键单击运行git bash,以管理员身份运行。因此,我存储的凭据位于凭据管理器中,如果我不以管理员身份登录Windows,则无法使用Windows GUI进行访问。

要解决此问题:

  • 以管理员身份(或使用bash运行的任何用户)打开cmd
  • 转到Windows / System32
  • 输入cmdkey /list。您的旧凭据应显示在此处,其部分显示为... target:xxx ...
  • 输入cmdkey /delete:xxx,其中xxx是上一行的目标

它应确认您的凭据已被删除。下次您在git bash中执行任何需要身份验证的操作时,都会弹出一个窗口要求您提供凭据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.