Gar*_*son 6 git bitbucket git-for-windows
在一台新机器上,我安装了 Git for Windows 2.37.1.windows.1,其中还安装了 Git Credential Manager Core 2.0.785+6074e4e3d3。我创建了一个Bitbucket 应用程序密码。然后我尝试使用例如访问我的 Bitbucket 帐户上的私人存储库git pull。
Git 弹出了 Bitbucket 的身份验证对话框。它有两个选项:使用浏览器进行身份验证,或使用密码进行身份验证。我首先尝试了密码选项。我使用了 Bitbucket 用户名和新创建的应用程序密码。我能够访问存储库。
但是当我尝试完全相同的命令时,它再次弹出身份验证对话框。我一遍又一遍地执行这些步骤。每次它都允许我访问存储库,但似乎凭证没有被保存。
我在 Windows 中打开凭据管理器并看到git:https://bitbucket.org.
我尝试再次访问存储库,但这次我选择了使用浏览器进行身份验证的选项。它将我发送到某个网页,并且由于我已经登录了 Bitbucket 站点,因此它说我已通过身份验证。我能够访问存储库。现在我每次都可以访问存储库而无需身份验证对话框。
请注意,如果我创建GitHub 个人访问令牌并在身份验证对话框中输入它,Git 似乎会保存它,因此我不需要每次都输入它。
为什么 Bitbucket 不存储我的凭据?为什么它要求我通过浏览器进行身份验证?如果我被迫通过浏览器进行身份验证,那么拥有应用程序密码有什么意义?这个具体场景记录在哪里?
更新使用浏览器进行身份验证(Windows 版 Git 中“连接到 Bitbucket”身份验证对话框中的两个选项之一)后,我能够继续使用 Git,而无需在 Windows 10 命令提示符上进行进一步身份验证。啊,但后来我切换到 PowerShell,整个事情又发生了:每次我尝试例如时,我都会收到身份验证对话框git push。每次我都成功使用“密码”选项,使用我的应用程序密码,但它从未保存密码,需要我每次重新输入密码。
所以我再次选择对话框中的“浏览器”选项;它带我到了一个 Bitbucket 网页,上面写着(因为我已经登录了):
身份验证成功 Git Credential Manager 已成功通过身份验证。您现在可以关闭此页面。
现在,我可以git push使用 PowerShell 进行尽可能多的操作,因为我使用“浏览器”进行了身份验证。
所以问题仍然存在:为什么 Bitbucket 的 Git for Windows 身份验证对话框使用保存的应用程序密码,而不是要求我每次重新输入它?(请注意,我已经更新到 Git for Windows 2.37.2.windows.2。)
Von*_*onC -1
首先,确保6 天前(2022 年 8 月 12 日)发布的Git for Windows 2.37.2(2)仍然存在问题
其次,请确保注册应用程序密码 作为您的密码。
(应用程序密码是基于用户的访问令牌,用于编写脚本任务以及将工具(例如 CI/CD 工具)与 Bitbucket Cloud 集成)。
正如“公告:截至 2022 年 3 月 1 日止,通过 HTTPS 和 API 使用 Git 的 Bitbucket Cloud 帐户密码”所解释的:
如果您已将凭据(即用户名和帐户密码)保存在凭据管理器中,例如Git Credential Manager ( GCM )、Windows Credential Manager、OS X Keychain 或其他第三方应用程序,那么您将需要更新它们在 2022 年 3 月 1 日之前使用应用程序密码,以便继续使用 Bitbucket API 和/或通过 HTTPS 的 Git 进行基本身份验证而不会造成中断
以下是如何在 Windows 上使用应用程序密码更新 GCM:
在 CMD 中,设置一个简化的 PATH,例如:
set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set "GH=%LOCALAPPDATA%\Programs\Git"
set "PATH=%GH%\bin;%GH%\cmd;%GH%\usr\bin;%GH%\mingw64\bin;%GH%\mingw64\libexec\git-core;%PATH%"
Run Code Online (Sandbox Code Playgroud)
然后输入相同的 CMD:
printf "Host=bitbucket.org\nprotocol=https" | git credential-manager-core get
# or
printf "Host=bitbucket.org\nprotocol=https\nusername=YourBitBucketAccount" | git credential-manager-core get
Run Code Online (Sandbox Code Playgroud)
如果您没有看到您的令牌(BitBucket Cloud 的应用程序密码),请手动注册:
printf "Host=bitbucket.org\nprotocol=https\nusername=YourBitBucketAccount\npassword=YourAppPassword" | git credential-manager-core store
Run Code Online (Sandbox Code Playgroud)
然后再试一次,即使没有克隆,也可以使用git ls-remote https://bitbucket.org/you/YourPrivateRepo.
如果它列出了分支,则身份验证有效。