【问题标题】:Git: different origin for submodule in different branchGit:不同分支中子模块的不同来源
【发布时间】:2018-07-16 18:45:04
【问题描述】:

我的项目包含一个子模块submodA。对于branch_dev,子模块的原始网址链接到sub_dev,这是sub_master 的一个分支,但我可以在其中应用修改和提交。对于branch_master,子模块的原始网址直接链接到sub_master

branch_dev/submodA--origin-> sub_dev --fork--> sub_master

master_dev/submodA--origin-> sub_master

通过这样做,我可以克隆branch_dev 并使用git submodule update --init --recursive 自动找到我在sub_dev 中所做的修改。

我的问题是我的两个分支之间不同的submodA 的原始网址不会自动更改,我必须在子模块中手动更改带有git remote set-url origin sub_devsub_master 的原始网址。

是否有解决方案在分支之间切换时自动更改我的子模块的原始 url?我可能会尝试一些太复杂的东西,所以我也很乐意在这里为我的情况提供其他解决方案。

【问题讨论】:

    标签: git git-submodules git-remote


    【解决方案1】:

    IMO 您根本不需要更改来源的 URL。添加两个不同的遥控器(其中一个可以称为origin,但这没关系)并为每个分支设置不同的上游。像这样的:

    cd submodA
    git branch --set-upstream-to=origin master
    git branch --set-upstream-to=origin2 dev
    

    现在您可以在子模块中git push/pull 无需显式命名远程,因此 git 使用当前签出分支的上游。

    【讨论】:

    • 感谢您的回答。在submodA 中,我只有一个分支master,根据我选择的项目分支,它有两个不同的遥控器。如果我在submodA 中创建两个分支,我想我每次在master_devbranch_dev 之间切换时都需要检查我想要使用的分支?我的目标是在submodA 中只有一个分支,根据两个分支项目获取良好的远程sub_devsub_master。像这样,克隆我的 repo 的人将通过运行 git submodule update --init --recursive 自动拥有适当的子模块
    • 我终于找到了我要找的东西here。我已经修改了 .gitmodules 文件,但命令 git sync 是缺失的部分
    猜你喜欢
    • 2021-03-15
    • 2016-10-05
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多