6

我克隆了一个存储库,git clone该存储库依赖于另一个私有存储库。在当前 repo 中,我尝试使用go get该依赖项 ( go get -u ./...),但它引发了一个错误:

致命:无法读取“https://bitbucket.org”的用户名:终端提示已禁用

信息

  • 我曾经git clone git@my-name.bitbucket.org:company/repo.git将 repo 克隆到~/Desktop/BitBucket/Company目录。
  • 我有GOPRIVATE="bitbucket.org/company/*"
  • 没有includeIf. 如果我用公司 .gitconfig 替换 .gitconfig工作正常。但是我需要管理多个帐户...
  • 该命令git config --get user.name(在 repo 内)返回My Name. 所以有一个问题go get

我的主要 .gitconfig文件(在 $HOME 目录中):

[includeIf "gitdir/i:~/Desktop/BitBucket/Company/"]
        path = ~/.git/BitBucket/Company/.gitconfig

我的.gitconfig文件(用于公司回购 $HOME/.git/BitBucket/Company/.gitconfig):

[user]
        name = My Name
        email = my.name@company.com
[url "git@my-name.bitbucket.org:"]
        insteadOf = https://bitbucket.org/

我的ssh 配置文件($HOME/.ssh/config):

Host my-name.bitbucket.org
  Hostname bitbucket.org
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/keys/BitBucket/my_name/id_rsa

我的错误是什么?

我还发现了这篇文章:https ://medium.com/easyread/today-i-learned-fix-go-get-private-repository-return-error-terminal-prompts-disabled-8c5549d89045 。您可以查看第一条评论:

仅供参考,这在使用引用自定义 .gitconfig-custom 的 .gitconfig 时不起作用。它必须存在于 ~/.gitconfig.... 令人沮丧的人。

我试图将公司 .gitconfig移动到主目录(+ 将其重命名为 .gitconfig-company)。没有任何效果。

4

1 回答 1

3

如果您go get用于克隆存储库,请注意gitdir:gitdir/i:模式与正在克隆的存储库不匹配。这是因为该模式匹配作为目录的.git目录,而当您克隆时,该.git目录尚未创建。

您可以尝试将这样的指令放入您的配置中:

[url "git@my-name.bitbucket.org:company/"]
        insteadOf = https://bitbucket.org/company/

如果您需要克隆其他(公共)存储库,然后为 Bitbucket 设置一个非工作密钥。

于 2020-12-18T11:38:18.143 回答