2017-09-28 92 views
0

我有两个版本库repoA和repoB。 repoA包含repoB和更多的一些文件和文件夹。结构如下git如何在两个版本库之间共享代码

repoA 
--fileA 
--fileB 
--folderA 
--folderB 

repoB 
--fileB 
--folderB 

这两个存储库fileB和folderB通用。

我该如何做到这一点,如果fileB和/或folderB修改任何回购,那么两者都将被更新。

如果可能更好,如果不是,我怎样才能将repoB合并到repoA中,以便所有提交repoB的代码都存在,并且不会对repoB中不存在的其他文件进行更改。大多数时候repoB将被midified共同文件和文件夹repoA将被修改这些文件和文件夹,这是不存在的repoB提前

感谢

回答

0

将以下脚本保存为“混帐,子文件夹” :

git filter-branch --prune-empty --index-filter \ 
    "git ls-files -s | sed 's-\t-&$1/-' | 
    GIT_INDEX_FILE=\$GIT_INDEX_FILE.new \ 
    git update-index --index-info && 
    mv \$GIT_INDEX_FILE.new \$GIT_INDEX_FILE || true" --tag-name-filter cat -- --all 

注意:该脚本是不是我的,我发现它前一段时间网路上的,但没办法把它找回来提及它,并给予信贷它的作者......

用它将repoA和repoB移动到子文件夹中,例如假设你有分别克隆repoA和repoB到cloneA和cloneB:

cd cloneA 
git-subfolder projectA 
cd ../cloneB 
git-subfolder projectB 

然后将它们合并:

cd ../cloneA 
git pull ../cloneB 

然后,您可以创建第三子文件夹,例如“common”,并把fileB和folderB放在那里。 “子项目”projectA和projectB都必须引用commonB子文件夹中的fileB和folderB。您也可以在projectA和projectB中创建符号链接到fileB和folderB。

相关问题