Git 如何从不同的分支引入子模块?

Git 如何从不同的分支引入子模块?,git,git-submodules,Git,Git Submodules,我在不同的分支上有一个子模块(带子模块的分支),目前在没有子模块的分支上(不带子模块的分支) 如果我想要当前分支中的子模块,我该怎么办?我想我可以选择添加子模块的提交,但是如果在提交中有许多其他修改(比如说,有多个子模块),而我只需要一个特定的子模块呢 有没有办法在不再次手动添加git子模块的情况下实现这一点?也许使用签出?您可以执行一个重基,这样您就可以在没有子模块的名为branch的分支上的a、B提交之上获得C提交f: 带子模块的git签出分支 获取最后更新的git pull 无子模块的gi

我在不同的分支上有一个子模块(带子模块的分支),目前在没有子模块的分支上(不带子模块的分支

如果我想要当前分支中的子模块,我该怎么办?我想我可以选择添加子模块的提交,但是如果在提交中有许多其他修改(比如说,有多个子模块),而我只需要一个特定的子模块呢


有没有办法在不再次手动添加git子模块的情况下实现这一点?也许使用
签出

您可以执行一个重基,这样您就可以在没有子模块的名为branch的分支上的a、B提交之上获得C提交f:

  • 带子模块的git签出分支
  • 获取最后更新的git pull
  • 无子模块的git签出分支
  • 带子模块的git rebase分支

  • git cherry pick
    是您的最佳选择,尽管这是有争议的

    如果这不是一个选项,因为提交是脏的,那么总是可以选择提交。顺便说一句,这正是你应该经常提交并推送一个的原因。提交是免费的,很容易挤压它们,但拆分它们需要修改历史记录

    git-merge
    也是一种可行的方法,但我相信你不想去那里,因为你只想要那一个。因此,重新定基也是不可能的

    最后一点注意:如果因为提交有您需要的一个子模块和其他您不需要的文件而无法进行cherry pick,那么您可以始终选择。由于这些都是子模块,虽然,我不是100%它将工作

    ---(Commit that adds submodule)-A-B-[branch-with-submodule]
     \
      --C-[branch-without-submodule*]