我想要一个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/...
。
有没有办法让这两种用户都能使用? (或者我完全误解了它是如何工作的?)
答案 0 :(得分:1)
有没有办法让这两种用户都能使用? (或者我完全误解了它是如何工作的?)
使用子模块时,我发现最简单的方法是将子模块视为只读克隆。如果我需要进行更新,我将单独克隆上游存储库,然后git pull
将更改复制到子模块中。
那就是说,你仍然可以做到这一点。默认情况下,请使用https://
网址。对于需要推动变革的人,他们会:
git remote set-url --push git@github.com:username/projectSub
Git允许您拥有单独的push
和pull
网址。