【问题标题】:Inconsistent git submodule remote url不一致的 git 子模块远程 url
【发布时间】:2021-07-23 02:33:27
【问题描述】:

我有一个 git 子模块:

$ cd zathura
$ git remote get-url origin
ssh://git@github.com/pwmt/zathura.git
$ cd ..

但是在.git/config里面

[submodule "zathura"]
    url = https://github.com/pwmt/zathura.git

.gitmodules里面

[submodule "zathura"]
    path = zathura
    url = https://github.com/pwmt/zathura.git
    ignore = dirty

问题

为什么远程 url 不一致(https 和 ssh 的混合)? 这是有效的吗?还是因为我可能犯了一些错误?如何获得一致的远程 url 以及 git 使用哪个 url?

【问题讨论】:

  • 您在初始化子模块时是否设置了insteadOf? (我不确定这是否会重写 in-.git/config 条目。)您最初是如何初始化子模块的?无论如何,这里没有什么根本错误:.gitmodules 行只是git submodule init 的说明,以防没有更详细的信息; .git/config 条目由 git submodule init 设置;并且遥控器的 URL 是实际使用的 URL,由初始的 git clone 配置,之后随时可以调整。
  • 我使用git submodule add --force --name "${RepositoryName}" "${Url}" "${RepositoryPath}" 进行了初始化。是的,我用过insteadOf。因此,当使用insteadOf 时,Url 不会反映在.gitmodules.git/config 中?
  • 正如我所说,我不确定insteadOf 是否会在实例化时导致重写。不过,您可以轻松地对此进行测试。

标签: git url ssh git-submodules git-remote


【解决方案1】:

来自comments of Git Submodules equivalent for url.insteadof,这应该可以:

git -c url.https://github.com/.insteadOf=git@github.com: submodule update --init --recursive

这样,您可以测试insteadOf 指令的效果,并确保到处都使用HTTPS。

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 2013-11-27
    相关资源
    最近更新 更多