首页 > 解决方案 > 如何从不同的分支带来子模块?

问题描述

我在不同的分支(branch-with-submodule)上有一个子模块,目前在没有一个分支(branch-without-submodule)的分支上。

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

如果我想要当前分支中的子模块,我该怎么办?我想我可以只cherry-pick添加子模块的提交,但是如果该提交中有许多其他修改(例如,有多个子模块)并且我只需要一个特定的子模块怎么办?

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

标签: gitgit-submodules

解决方案


git cherry-pick是您最好的选择,尽管这是有争议的。

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

git merge也是一种可行的方式,但我相信你不想去那里,因为你只想要一个 .gitmodules 添加。所以,变基也是不行的。

最后一点:如果您因为该提交具有您需要的一个子模块和您不想要的其他文件而无法挑选,您可能总是只挑选某些文件。但是,由于这些是子模块,因此我不是 100% 它会起作用。


推荐阅读