gpt4 book ai didi

Git 子模块和 ssh 访问

转载 作者:IT王子 更新时间:2023-10-29 00:51:10 28 4
gpt4 key购买 nike

我在使用包含多个子模块的 git 存储库时遇到了一些问题。

super git仓库是用命令构建的

mkdir projectname
cd projectname
git init
git submodule add ssh://myusername@server/pathtorepos

当另一个用户(“otheruser”)随后克隆 super 存储库时,一切似乎都正常了。但是当需要访问子模块时

git submodule init
git submodule update

git 尝试使用“myusername”而不是“otheruser”克隆子模块。

如何解决这个问题?

最佳答案

如果可能,最好确保 .gitmodules文件包含任何人都可以克隆的存储库的 URL,通常是 git://http://网址。然后自己有 SSH 访问权限的用户可以在克隆后更改到子模块并更改 remote.origin.url 中的 URL。使用用户名指向 SSH URL,例如:

 cd my-submodule
git remote set-url origin otheruser@server:/pathtorepos

即使在当前情况下,其他用户也应该能够做到这一点。 更新: Chris Johnsen 在下面指出,在 .gitmodules 中使用 SSH URL 也是合理的如果您省略用户名并且存储库的所有用户都将具有 SSH 访问权限 - 如果本地和远程不同,他们将需要添加与上述类似的用户名。

请注意 .gitmodules 中的 URL仅在初始化子模块时使用。初始化子模块设置配置值 submodule.<SUBMODULE-NAME>.url在主项目中提交到 .gitmodules 中的任何内容- 这是将在第一次子模块更新时使用的值。在初始化和更新子模块之间,您还可以使用如下命令更改将用于第一次更新的 URL:

git config submodule.my-submodule.url otheruser@server:/pathtorepos

确实,如果第一次更新失败,您可能需要这样做。第一次更新子模块后,您需要更改的 URL 是为 origin 定义的。在子模块中 - 此时只有设置 submodule.my-submodule.url 才有用如果您可能要删除并重新更新子模块,请在主项目中配置值。

关于Git 子模块和 ssh 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6031494/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com