# Preparing the filesystems
cd submodule
# "submodule" is basically the path where you need your submodule code to be in the new repository,
# e.g. app/code/x/y (<-- in this case you need to create multiple folders ofc, not just one like seen here)
mkdir submodule
git mv file1 file2 dir1 dir2 submodule
git commit -am "Moved file"
# Actually merging
cd myRepoRoot
git remote add sub url_to_submodule
git fetch sub
git merge sub/master
# CD into the submodule
cd app/code/Foo/Bar
# Create the same directory tree as the current submodule path, in your submodule
mkdir -p app/code/Foo/Bar
2条答案
按热度按时间yyyllmsg1#
假设您有以下文件系统(为了简化答案,假设您只有一个子模块)
您只需执行以下操作:
用文字来解释:你有几棵树没有共同的提交,你只需要合并这些树,这就是第二部分要做的.
第一部分只是为了确保子模块的文件系统是您所期望的。
tcomlyy62#
我根据@gturri的答案添加了一个示例,希望对大家有所帮助:
示例
假设这是你的子模块:
您的子模块存储在app/code/Foo/Bar中,您需要它位于新存储库中的确切位置,然后执行以下操作:
git submodule foreach 'mkdir -p "$sm_path"'
在所有子模块中自动创建目录结构。参见文档
添加的新目录:
通过GIT将文件移动到新文件夹:
现在它看起来像这样:
删除子模块文件夹:
将子模块合并到存储库中:
您的子模块现在应该位于存储库中的
app/code/Foo/Bar