访问github下的子模块的权限

时间:2015-03-18 15:38:52

标签: git github ssh git-submodules

我想要一个github项目 projectA ,它使用子模块 projectSub 。我还希望用户能够以递归方式克隆项目,自动同时获取 projectA projectSub

如果我错了,请纠正我,但据我了解,克隆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/...

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

1 个答案:

答案 0 :(得分:1)

  

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

使用子模块时,我发现最简单的方法是将子模块视为只读克隆。如果我需要进行更新,我将单独克隆上游存储库,然后git pull将更改复制到子模块中。

那就是说,你仍然可以做到这一点。默认情况下,请使用https://网址。对于需要推动变革的人,他们会:

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

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