Git凭证助手 - 更新密码

267

我目前在Windows 7上使用最新版本的Git (1.9.0)以及Git凭据助手通过HTTPS连接GitHub。

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

最近我通过网站更新了我的GitHub密码,现在无法再进行推送/拉取/获取等操作。

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


13
使用"git config --global credential.helper wincred"命令并输入用户名和密码,就可以将其存储在您的计算机中。下次更改密码时,重新运行上述命令即可。 - Akshay Lokur
如果其他方法都失败了,而你正在使用TortoiseGit,你可能想尝试通过它执行某个操作。例如,使用Tortoise进行拉取或获取操作将提示输入密码,然后你可以更新密码。这似乎会覆盖Git Bash缓存,然后你就可以再次使用bash了。 - Paul F. Wood
@AkshayLokur 这对我不起作用,我收到一条消息:“错误:无法使用单个值覆盖多个值”。 - MarkusSchaber
除了@AkshayLokur的评论外,我还必须遵循此问题下面的置顶评论。 - ijuneja
这个回答解决了你的问题吗?如何更新Git的密码? - user202729
13个回答

380

这些答案都无法解决我的Git凭据问题。以下是可行的方法(我正在使用Windows 8.1上的Git 1.9)。

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

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

请注意,要使用Windows凭据管理器进行Git操作,您需要像以下方式配置凭据助手:

git config --global credential.helper wincred
如果您有多个GitHub账户用于不同的代码仓库,那么您应该配置凭据使用完整的仓库路径(而不仅仅是域名,这是默认设置):

如果您有多个GitHub账户用于不同的代码仓库,那么您应该配置凭据使用完整的仓库路径(而不仅仅是域名,这是默认设置):

git config --global credential.useHttpPath true

24
如果 git config --list 包含 credential.helper=wincred,那么这应该是被接受的答案。 - M. F.
7
对我有用 - 谢谢你 - 并学习了关于Windows凭据管理器的知识。 - rwalter
3
我认为它适用于Windows 8.1和Windows 10。在我的情况下:Windows 10专业版,git版本是2.17。 - Thinhbk
3
对于那些(和我一样)删除了存储的凭据,希望再次提示输入但未看到提示的人。在凭据管理器中,你可以使用地址为 git:http://yourserver:port/通用凭据 进行 添加。无论是 Http 还是 Https,重要的是开头的 git:。请注意,不要更改原意。 - Alberto Chiesa
要更新您的凭据,请转到控制面板→凭据管理器→通用凭据。在Windows 10中,有一个额外的步骤:控制面板→凭据管理器→Windows凭据→通用凭据。 - user697473
显示剩余7条评论

128

在我第一次尝试Git fetch更改密码后,系统告诉我我的用户名/密码组合无效。这是正确的,因为Git凭据助手缓存了我的旧值。

然而,在重新启动终端/命令提示符后,我尝试了另一个git fetch,这时凭证助手提示我输入GitHub用户名和密码。

我猜测初始失败的Git fetch请求和重新启动终端/命令提示符的组合解决了我的问题。

我希望这个答案能帮助未来处于类似情况中的任何人!


4
只需重新启动Git Bash,它将提示一个对话框以输入新的用户名/密码。 - Quan
4
记录一下,我通过在不重启 Windows 7 上的 Powershell 会话的情况下再次执行 pull/fetch 来解决了这个问题。第二次尝试时,Windows 弹出了新凭据的提示。 - codewario
重新启动控制台/应用程序后,“wincred”对我起作用了。(我不得不重启我的控制台和“Atom”,然后一切正常工作) - low_rents
4
似乎在需要凭证的任何git命令第二次输入时都会这样,不仅限于git fetch,它也适用于第二次git clone - navigator_
1
非常感谢!每次我更改域密码时,都必须记住如何更新我的凭据。Git fetch - 对我有用! - Alexander Brattsev
1
是的,就是这个。 - SoEzPz

102

如果您是Windows用户,您可以在凭据管理器中删除或更新凭据。

在Windows 10中,请按照以下路径进行操作:

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

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

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

凭据管理器会显示许多项目,包括您的Outlook和GitHub存储库,位于“通用凭据”下面

您可以点击Git右侧的下拉箭头,它将显示编辑和删除选项。 如果您删除,下次提取或拉取时将弹出凭据提示框。 或者您可以直接在此处编辑凭据。


3
我尝试了其他选项,只有这个有效。我在这里找到了相关信息:https://cmatskas.com/how-to-update-your-git-credentials-on-windows/。 - neomib
2
请注意:此控件无法通过“控制面板”在METRO UI中访问!您必须手动运行control.exe才能查看此控件。 - AnrDaemon
1
这非常有帮助!我甚至不知道这些工具的存在。 - jaw
1
这很有帮助。 - Arsman Ahmad
当我每天使用git commit、push、pull时,我的电脑上没有与git相关的通用凭据。那么我们该如何更新密码呢?请提供建议。谢谢。 - Kamlesh

99

使用命令行解决方案适用于Windows、Linux和MacOS

如果您已在GitHub服务器上更新了密码,第一次尝试执行git fetch/pull/push命令时,它会生成身份验证失败消息。

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

即使我也遇到了这个问题,我执行了以上步骤,问题就解决了!


5
我不断收到“远程:用户名或密码无效”的错误提示,导致身份验证失败。 - RichMeister
1
@RichMeister:第二次运行时,它会要求输入用户名和密码。只需提供您的用户名/新密码即可。 - Farooque
4
在我修改密码后,这对我的MacOS有用,并且使用缓存的凭据。第一次尝试时出现“身份验证失败 ...”的提示。再试一次,会提示输入凭据,输入用户ID和新密码,然后就可以正常工作了。 - Kevin Hooke
1
这是最好/最容易的答案。 - Ryan Boken
1
在Windows 10和VSCode与WSL上对我有效。 - undefined
显示剩余5条评论

46

首先,使用Git命令git --version查找您正在使用的版本。如果您的版本比1.7.10更新,则只需使用此命令:

git config --global credential.helper wincred

执行 git fetch 命令后,会提示更新密码。

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


7
这并没有回答这个问题。 - disklosr
2
@disklosr 是的,它会强制Git在下一次执行远程操作时提示更新密码。 - Nilpo
1
@Nilpo那么什么是“远程操作”?“git push origin xxx”不应该是一种远程操作吗?但它没有执行,反而出现了“无效的用户名或密码”。 - RichMeister
1
它对我起作用了。执行此命令后,执行“git fetch”,您将被提示输入凭据,请提供它。 - Manjeet
1
为什么需要使用 --global?这样做岂不是会被要求重新设置所有仓库而不只是受影响的那个吗? - Thomas Weller

45

我觉得这里的答案已经过时了。对于我来说,使用Git v2.15.0,像这样发出git credential reject的命令就可以完成任务:

$ 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 凭据管理器应该为当域密码被更改时必须经历痛苦而负责。 - Janis Veinbergs
1
在“fill”之后,我们不应该使用“approve”吗? - Bernardo Dal Corno
1
+1 如果提供基于Git而不是基于Windows的解决方案。我正在运行Linux,并需要从密码切换到PAT,这是唯一有效的答案。 - Patrick vD
1
为了澄清,以防其他人像我一样蒙在鼓里:在验证新凭据可用后,当您输入 git credential approve 时,再次输入与其他调用 git credential 相同的2行内容:protocol=https,然后是 host=github.com - David Burson
1
这个答案有点不清楚。看起来像是在编辑一个文本文件或者其他什么东西。提醒大家一下:这只是多行命令行输入。 - Tyler V.
显示剩余5条评论

27

就我所知,我遇到了同样的问题(我的老板也一样,所以问题变得更加严重)。

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

在 Microsoft 的 Git 凭证管理器中,这是已知问题,可能会在2019年初得到解决(所以不要抱太大希望)。

更新(2020年9月30日):GCM4W似乎被放弃了(最后一次发布已经超过一年了,自那时以来只有一个提交到主分支的命名,我不是在开玩笑,“重建可扩展版本的GCM标志”)。但别担心,随着微软现在进入核心领域,出现了一个闪亮的新项目,叫做GCM Core,它似乎能够正确地处理密码更改。它可以作为独立的安装(应该会自动激活,否则使用git config --system credential.helper manager-core激活),但也包含在当前的Git for Windows 2.28.0中。有关更多信息,请参见此博客文章


1
了解Windows凭据管理器并使用控制面板UI是很好的,但当您必须在所有计算机上更新时会变得繁琐。这个单一命令非常棒,因为它完成了相同的事情(删除现有的无效凭据),这迫使git下次需要凭据时再次提示。 在Windows Server 2016上,删除凭据的命令语法略有不同: cmdkey /delete:git:https://your.git.server.company.com - Rudimentary
/delete{:<TargetName>}官方语法,但我发现在Windows 10(1803)中,快捷方式/del <TargetName>也可以使用。 - Jakob
一个很棒的别名想法!delpw = !cmdkey /delete:git:$(git remote get-url $1)。用法:git delpw origin(注:在这里/del无效,Win 10也是如此)。 - Bernardo Dal Corno

20

Windows 的解决方法:

控制面板 > 用户账户 > 凭据管理器 > 通用凭据

在此输入图像描述


只有当您以要更改凭据的用户身份登录时,此方法才有效;如果您以管理员身份运行git bash并且您不是管理员,或者您正在为不同的用户更改凭据,则出于明显的原因,此方法将无法正常工作。 - Jorge.V
1
对于Windows 10,它被命名为:控制面板>用户帐户>管理凭据>Windows凭据,搜索git凭据并进行编辑。 - htafoya
我每天使用git commit、push、pull,但我的电脑上没有与git相关的通用凭据。那么我们该如何更新密码呢?请给予建议。谢谢。 - Kamlesh

7

只需在安装git-credential-winstore的目录中运行cd命令。如果您不知道在哪里安装,请在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

protocol=https后面按Enter键两次。


7

对于我的情况,使用git bash 2.26.2时,当前的解决方案都没用。如果您正在使用Windows凭据管理器,则此解决方法应该适用于任何情况。

问题之一是Windows凭据管理器仅运行选定的用户。例如,在我的情况下,我使用右键单击“以管理员身份运行”来运行git bash 。因此,我的存储凭据位于凭据管理器中,如果我不以管理员身份登录到Windows,则无法使用Windows GUI访问它们。

要解决此问题:

  • 以管理员身份打开cmd(或者是您运行git bash的用户)
  • 进入windows / system32目录
  • 键入cmdkey /list。 在此处,您的旧凭证应该出现在这里,并且具有一个部分读取...target:xxx...
  • 输入cmdkey /delete:xxx, 其中 xxx 是上一行中的目标名称

系统将确认您已删除凭据。 下次您在git bash中执行需要认证的任何操作时,将弹出一个窗口询问您的凭据。


访问凭据管理器 https://support.microsoft.com/zh-cn/windows/accessing-credential-manager-1b5c916a-6a16-889f-8581-fc16e8165ac0 - Niko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接