我有一个本地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
-活动配置-但我不知道怎么做,似乎也找不到任何文档。
感谢您的帮助!
答案 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凭据帮助程序正确启动。