如何在不询问每个子存储库密码的情况下克隆带有子模块的git存储库

时间:2018-08-08 20:23:32

标签: git git-submodules

我最近将存储库放入了bitbucket。这个存储库有一些子模块

我正在处理初始化脚本。我想克隆主目录,然后它们提取所有子目录。

 git clone https://bitbucket.org/#####/main.git elastic --recurse-submodules

这提示我输入用户名和密码。

Username for 'https://bitbucket.org': myuser 
Password for 'https://myuser@bitbucket.org': 

他们再次要求我提供每个子模块

Username for 'https://bitbucket.org':  
...

我的.gitmodules文件如下:

[submodule "api"]
     path = app/api/
     url = git@bitbucket.org/###/api.git
     branch = master
[submodule "front"]
     path = app/front
     url = git@bitbucket.org/###/front.git
     branch = master
[submodule "app/config"]
     path = app/config
     url = git@bitbucket.org/###/config.git
     branch = master

... some few more repositories

如何克隆主存储库,并且它们对所有子存储库使用相同的凭据?

我正在使用AWS AMI Linux。

2 个答案:

答案 0 :(得分:3)

设置git以使用凭据内存缓存可以解决我的问题

func main() {
    y := Environments{}

    err := yaml.Unmarshal([]byte(data), &y)
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    fmt.Printf("%+v\n", y)

}

这足以使用相同的用户/密码提取所有存储库

如果我想整天保持相同的缓存,则可以将时间设置为更长的时间:

git config --global credential.helper cache

86400秒= 1天;

答案 1 :(得分:0)

检查您的git config输出:

类型:git config -l

如果您看到类似这样的规则:

git config --global url.https://github.com/.insteadOf git@github.com/

这可以解释为什么甚至对于子模块也使用HTTPS URL的凭据。