更新Git for Windows凭据以使用Bitbucket应用程序密码

4
我正在使用 Windows 10 上的 Git 2.35.1.windows.2。我知道这个版本使用了 Windows 凭据管理器。Bitbucket 最近已经弃用了使用 Bitbucket 帐户密码进行 HTTPS Git 请求,改为使用应用程序密码
我有一个远程 URL 为 https://user@bitbucket.org/example/foobar.git 的仓库。昨天我创建了一个 Bitbucket 应用程序密码。然后我直接进入 Windows 凭据管理器,找到了git:https://user@bitbucket.org 的凭据,并手动将密码设置为我创建的新应用程序密码。(我假设这也会将git:https://bitbucket.org的凭据更改,因为两者都显示“修改日期:今天”。)
但是,每当我为该存储库执行git push时,响应仍然会说:
远程仓库提示:您正在使用基于 HTTPS 的 Git 账户密码。
从 2022 年 3 月 1 日开始,用户必须使用应用程序密码来进行基于 HTTPS 的 Git 操作。
为避免任何中断,请将您的 Git 客户端中使用的密码更改为应用程序密码。
请注意,这些凭据可能已经自动存储在您的 Git 客户端和/或凭据管理器(如 Git 凭据管理器 (GCM))中。
更多详细信息:
https://bitbucket.org/blog/deprecating-atlassian-account-password-for-bitbucket-api-and-git-activity 奇怪的是,在 Windows 凭据管理器中,git:https://user@bitbucket.orggit:https://bitbucket.org 凭据都显示“修改日期:今天”,尽管我昨天试图将它们更改为应用程序密码。
为什么我手动更新了 Windows 凭据管理器,但没有更新此存储库的凭据到新的应用程序密码?最佳的更新应用程序密码的方法是什么?
更新2022-03-12:显然,Atlassian最终禁用了使用账户密码的功能,所以当我今天尝试git push时,它弹出一个对话框要求我输入凭据。我在UI中输入了应用程序密码(奇怪的是,它谈论到SourceTree,而我是在使用命令行中的Git),最后它接受了新密码。在Windows凭据管理器中,git:https://user@bitbucket.orggit:https://bitbucket.org凭据都显示“修改日期:今天”。还有一个新的git:https://user@bitbucket.org/refresh_token条目。

现在,命令行上的Git似乎可以工作了,但奇怪的是,即使命令成功执行,命令仍然会显示如下内容:

fatal: invalid credentials

不过,根据Visual Studio Developer Community comment的说法,这可能完全不相关。
GCM Core的bitbucket.org部分在标准错误流中报告了“致命错误:无效凭据”行,这就是导致“推送失败”错误消息出现的原因。

我看到了来自Bitbucket的完全相同的消息,并且有完全相同的问题。我已经切换到Git凭据管理器核心。我无法弄清楚如何让Windows上的git重新提示我输入密码(在这一点上,我假设我会输入应用程序密码,但我还不确定)。 - Donnie Hale
有进展了吗?我也遇到了同样的问题。 - Mike Flynn
2个回答

4

以下是我所采用的方法:

  1. 进入控制面板 - 凭据管理器 - 管理 Windows 凭据。

  2. 找到 @bitbucket.org 的凭据。

  3. 选择“编辑”,将密码更改为应用程序密码。

通过“git push”进行验证。


那个过程和我在问题中描述的有什么不同吗?你是说我必须更新 git:https://bitbucket.org 而不是 git:https://user@bitbucket.org 吗?这就是区别吗? - Garret Wilson
我想我误解了你关于Windows凭据管理器的评论。对此我深表歉意。我确实在其中看到了2个“bitbucket.org”凭据,并将它们都更改为应用程序密码。 - Donnie Hale
一个额外的注意事项,Visual Studio会创建一些带有用户名的凭据,例如PersonalAccessToken。同样将其替换为您的用户名以使其正常工作。 - Bart Friederichs

0

请确保 C:\Program Files\Git\mingw64\libexec\git-core 已经添加到您的 PATH 环境变量中,并检查您的远程服务器关联的密码:

printf "host=bitbucket.org\nprotocol=https" | git credential-manager-core get

您可能有多个条目。
为了确保结果,我会首先将它们移除:

printf "host=bitbucket.org\nprotocol=https" | git credential-manager-core erase

重复执行直到看到提示要求输入凭据。
不要输入凭据:点击取消。

然后使用您的应用令牌存储您的凭据:

printf "host=bitbucket.org\nprotocol=https\nusername=xxx\npassword=<token>" | git credential-manager-core store.

然后你可以开始使用了!

注意:如果您启用了双重身份验证,可能需要最新的GCM v2.0.692版本,该版本支持“使用OAuth登录”功能。

https://user-images.githubusercontent.com/5658207/146974049-dd66c3bf-1291-4c39-b83f-86f13cd1019b.png


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