git如何在两个存储库之间共享代码

时间:2017-09-28 08:06:26

标签: git

我有两个存储库,repoA和repoB。 repoA包含repoB以及更多一些文件和文件夹。结构如下

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

repoB
--fileB 
--folderB

存储库fileB和folderB都是常见的。

如果在任何仓库中修改了fileB和/或folderB,我将如何实现这一目标。

如果可能更好,如果不是,我怎么能将repoB合并到repoA,以便所有提交repoB存在,也不会对repoB中不存在的其他文件进行任何更改。大部分时间repoB将被中和为公共文件和文件夹,repoA将被修改为repoB中不存在的那些文件和文件夹

提前致谢

1 个答案:

答案 0 :(得分:0)

将以下脚本保存为" git-subfolder":

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

注意:那个脚本不是我的,我前段时间在网上的某个地方找到了它,但没有办法找回它来引用它并给予其作者信用...... / p>

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

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

然后合并它们:

cd ../cloneA
git pull ../cloneB

然后,您可以创建第三个子文件夹,例如"公共"并将fileB和folderB放在那里。两个"子项目"然后projectA和projectB必须引用common子文件夹中的fileB和folderB。您还可以在projectA和projectB中创建到fileB和folderB的符号链接。

相关问题