我有两个存储库,repoA和repoB。 repoA包含repoB以及更多一些文件和文件夹。结构如下
repoA
--fileA
--fileB
--folderA
--folderB
repoB
--fileB
--folderB
存储库fileB和folderB都是常见的。
如果在任何仓库中修改了fileB和/或folderB,我将如何实现这一目标。
如果可能更好,如果不是,我怎么能将repoB合并到repoA,以便所有提交repoB存在,也不会对repoB中不存在的其他文件进行任何更改。大部分时间repoB将被中和为公共文件和文件夹,repoA将被修改为repoB中不存在的那些文件和文件夹
提前致谢
答案 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的符号链接。