Gcloud源存储库尝试将本地推送到远程,并且命令使用了错误的用户名/凭据

时间:2018-06-30 19:19:42

标签: git gcloud

我有一个本地git仓库,我正尝试将其推送到我创建的Gcloud源仓库。一切似乎都很好,除了当我尝试推动时我得到了:

fatal: remote error: Access denied to email1@example.com

我已经通过these steps来让gcloud使用正确的git凭据,但无济于事。我目前在计算机上有2个gcloud配置,并将第二个配置设置为活动状态。但是,运行git push google master推送到gcloud源仓库将始终尝试使用用于配置1的email1。我想使用用于配置2的email2-活动配置-但我不知道怎么做,似乎也找不到任何文档。

感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

gcloud source repos clone将git存储库从当前活动的Google Cloud项目克隆到指定目录中,如果没有指定目标目录,则克隆到当前目录中。
克隆操作将本地克隆配置为使用您的gcloud凭据来认证将来的git操作。

这应该是一个https URL,这意味着有一个凭证助手来缓存凭证(用户名/密码)

在克隆的存储库中,键入:

git config credential.helper

如果不是git-credential-gcloud.cmd(如in this issue)或git-credential-gcloud.cmd不在您的%PATH%中(where git-credential-gcloud.cmd应该返回路径),它将不行。
注意:现在,凭证助手可以be called simply gcloud.cmd

git config credential.https://source.developers.google.com.helper

如果您无权访问gcloud.cmd,则需要generate static credentials

答案 1 :(得分:0)

我要检查的第一件事是尝试写入GCR的用户在Google云端上对IAM的许可。要写入Google Cloud Repository(GCR),您需要先分配正确的权限,然后才能写入存储库。使用gcloud sdk时,用户凭据需要与IAM中的凭据匹配,否则您将遇到很多权限被拒绝的消息。

如果您无法使用gcloud界面访问GCR,则可以使用cloud shell界面测试交互,该界面将对您的项目具有必要的服务帐户访问权限。就个人而言,在大多数情况下,我建议使用云外壳,而不是通过gcloud SDK连接。

答案 2 :(得分:0)

跑步时

$ gcloud source repos clone hello-world

在当前配置中,gcloud将在后台设置git凭据帮助程序,使其始终指向克隆存储库所使用的同一帐户。您可以通过

看到它
$ git config -l

credential.helper=!gcloud.cmd auth git-helper --account=email1@example.com --ignore-unknown $@

因此,以后切换gcloud配置或设置新的gcloud帐户将不会更改此存储库的身份验证方式。

我不确定为什么要用email1克隆仓库,然后用email2推送到仓库。

您随时可以更改它的运行状态

$ git config credential.helper \
  '!gcloud.cmd auth git-helper --account=email2@example.com --ignore-unknown $@'

如果出于某些原因要始终使用活动配置,只需在设置凭据助手时省略--account

答案 3 :(得分:0)

我遇到了类似的行为,我的问题是由~/.gitcookies文件引起的,该文件包含存储的“ email1@example.com”凭据

编辑/删除此文件后,git使用gcloud凭据帮助程序正确启动。