github 下子模块的访问权限

Access rights to submodules under github

我想要一个 github 项目 projectA,它使用子模块 projectSub。我还希望用户能够递归地克隆项目,自动获得 projectAprojectSub.

如果我错了请纠正我,但据我了解,克隆 https://github.com/username/projectname 意味着在推送之前会要求您输入用户名和密码,而克隆 git@github.com:username/projectname 将使用您的 ssh自动凭据。

现在,我可以这样添加子模块了

git add submodule git@github.com:username/projectSub

或因此

git add submodule https://github.com/username/projectSub

如果我使用第一种方法,没有 ssh 访问项目的用户将无法递归克隆projectA,因为.gitmodules 文件包含 git@github.com:....

但是如果我使用第二种方法,在将更新推送到 projectSub 时,具有 ssh 访问项目的用户 仍然会被要求提供用户名和密码,因为 .gitmodules 文件包含 https://github.com/....

有没有办法让这两种用户都能使用? (或者我完全误解了它是如何工作的?)

Is there a way to make this work for both kinds of users? (Or have I completely misunderstood how this works?)

使用子模块时,我发现将子模块视为只读克隆最简单。如果我需要进行更新,我会单独克隆上游存储库,然后 git pull 将更改放入子模块。

也就是说,您仍然可以完成这项工作。默认使用 https:// 网址。对于需要推送更改的人,他们将:

git remote set-url --push git@github.com:username/projectSub

Git 允许您拥有单独的 pushpull 网址。