如何设置 .gitmodules 以便贡献者不必分叉子模块?
How to set .gitmodules so that contributors don't have to fork also submodule?
我在 github
上有一个图书馆
my_library
|-- my_submodule
和.gitmodules
[submodule "my_submodule"]
path = my_submodule
url = ../my_submodule.git
branch = master
我的贡献者现在需要将回购 my_library
和回购 my_submodule
分叉到他们的 github,然后才能 git clone --recurse-submodules https://github.com/<contributor_user_name>/my_library
否则他们会得到
...
Submodule 'my_submodule' (https://github.com/<contributor_user_name>/fastai-docs.git) registered for path 'docs'
Cloning into 'my_submodule'...
Username for 'https://github.com': <contributor_user_name>
Password for 'https://<contributor_user_name>@github.com':
remote: Repository not found.
fatal: repository 'https://github.com/<contributor_user_name>/my_submodule.git/' not found
fatal: clone of 'https://github.com/<contributor_user_name>/my_submodule.git' into submodule path 'my_submodule' failed
我该怎么做,贡献者也不需要分叉 my_submodule
?
您提交了一个 .gitmodules
文件,其中 url
是相对于根回购源的。
将此相对 url 替换为绝对 url 到您的存储库:https://github.com/RichardYY/fastai-docs.git
用户(包括您自己)可以使用 git 配置 url.[replacement url].insteadOf
(example in this gist) 连接到其本地克隆上的不同存储库:
# for example : if you want to access this repo through ssh on your local clone :
git config url."git@github.com:RichardYY/fastai-docs.git".insteadOf https://github.com/RichardYY/fastai-docs.git
如果您指定 相对路径 作为子模块的 URL,Git 将假定子模块的存储库与主模块位于同一位置存储库。
If the URL is given relative to the superproject’s repository, the presumption is the superproject and submodule repositories will be kept together in the same relative location, and only the superproject’s URL needs to be provided. git-submodule will correctly locate the submodule using the relative URL in .gitmodules
.
如果您不希望您的贡献者也必须克隆子模块的存储库,您应该在 .gitmodules
:
中指定它的绝对 URL
[submodule "my_submodule"]
path = my_submodule
url = https://github.com/<your_user_name>/my_submodule.git
branch = master
这样,Git 将从您的 GitHub 帐户而不是他们的获取子模块的存储库。
我在 github
上有一个图书馆my_library
|-- my_submodule
和.gitmodules
[submodule "my_submodule"]
path = my_submodule
url = ../my_submodule.git
branch = master
我的贡献者现在需要将回购 my_library
和回购 my_submodule
分叉到他们的 github,然后才能 git clone --recurse-submodules https://github.com/<contributor_user_name>/my_library
否则他们会得到
...
Submodule 'my_submodule' (https://github.com/<contributor_user_name>/fastai-docs.git) registered for path 'docs'
Cloning into 'my_submodule'...
Username for 'https://github.com': <contributor_user_name>
Password for 'https://<contributor_user_name>@github.com':
remote: Repository not found.
fatal: repository 'https://github.com/<contributor_user_name>/my_submodule.git/' not found
fatal: clone of 'https://github.com/<contributor_user_name>/my_submodule.git' into submodule path 'my_submodule' failed
我该怎么做,贡献者也不需要分叉 my_submodule
?
您提交了一个 .gitmodules
文件,其中 url
是相对于根回购源的。
将此相对 url 替换为绝对 url 到您的存储库:https://github.com/RichardYY/fastai-docs.git
用户(包括您自己)可以使用 git 配置 url.[replacement url].insteadOf
(example in this gist) 连接到其本地克隆上的不同存储库:
# for example : if you want to access this repo through ssh on your local clone :
git config url."git@github.com:RichardYY/fastai-docs.git".insteadOf https://github.com/RichardYY/fastai-docs.git
如果您指定 相对路径 作为子模块的 URL,Git 将假定子模块的存储库与主模块位于同一位置存储库。
If the URL is given relative to the superproject’s repository, the presumption is the superproject and submodule repositories will be kept together in the same relative location, and only the superproject’s URL needs to be provided. git-submodule will correctly locate the submodule using the relative URL in
.gitmodules
.
如果您不希望您的贡献者也必须克隆子模块的存储库,您应该在 .gitmodules
:
[submodule "my_submodule"]
path = my_submodule
url = https://github.com/<your_user_name>/my_submodule.git
branch = master
这样,Git 将从您的 GitHub 帐户而不是他们的获取子模块的存储库。