我在不同的存储库中有多个项目:
tools
thirdparty
shared
├──Common
├──Exceptions
multimedia
├──VolumeControl
├──VideoRenderer
android
├──Audio
例如,android依赖于shared / Common,shared / Exceptions,tools,thirdparty和multimedia / VolumeControl。
我试过了:
但是,他们都在android文件夹中签出或带入多媒体文件夹。相反,我想要它:
android
├──Audio
├──VolumeControl (brought in from multimedia)
我如何做到这一点?
注意:我曾经在svn中使用lockexterns来完成此任务。
答案 0 :(得分:4)
我如何做到这一点?
您可以使用git filter-branch
和/或git subtree split
filter-branch将循环遍历每个提交,然后您只能检出给定的文件,而git subteree split
将是您的更好选择。
解释这两个选项,以便您可以选择自己喜欢的选项。
filter-branch
强> # Filter the master branch to your directory and remove empty commits
git filter-branch --prune-empty --subdirectory-filter YOUR_FOLDER_NAME filter_from_branch
这将检出从给定文件夹到当前目录的所有所需文件
subtree split
强> <强>
git subtree
强>git-subtree
-Merge
将子树或split
存储在子树中
git subtree split -P <name-of-folder> -b <name-of-new-branch>
答案 1 :(得分:0)
我想知道为什么git-submodule
无法实现。我记得,使用子模块可以指定目标目录,因此可能你可以这样做:
$ cd Android
$ git submodule add url/path-to-your-submodule-repo VolumeControl
$ git diff --cached --submodule # OPTIONAL - To verify before commit
$ git commit -m 'added multimedia/VolumeControl as sub-module'