如何将git repo的一部分推送到另一个回购?

时间:2017-08-30 14:18:07

标签: git

我在私人仓库中有一个私人项目,将它作为一个项目保存非常方便。通过这种方式,使用IDE可以很容易地在没有任何特殊命令的情况下使用它。

但我也希望在github上发布它的一部分并有时更新公共版本。如何创建repo的一个子目录A repo B的顶级目录并且仍然将所有标准命令应用于整个repo A?

1 个答案:

答案 0 :(得分:0)

可能子模块/子树是最好的方法,但只是提供一个(有些复杂的)替代方案:

  • 通过git filter-branch --subdirectory-filter将repoA的子文件夹B解压缩到一个新的独立repoB(请注意filter-branch重写回购,因此您应该在repoA的单独副本上执行此操作
  • 继续将repoA作为主要回购
  • 通过git remote add repoA ...
  • 将repoA添加为repoB的远程
  • repoA的偶然变化可以通过git fetch repoA; git cherry-pick ...挑选到repoB。 Git可以管理这个,即使两个repos的文件结构不匹配(一切都应该没问题,只要在repoA中提交你想要后退到repoB的提交在subfolderB中是独立的)